본문 바로가기
프로그래밍_기타 언어

파이썬(python) 예외처리(try except)

by 떠도리c 2024. 9. 22.
반응형

파이썬(python) 예외처리(try except)

try except문

프로그래밍 작동 시 오류를 처리하기 위한 방법

try, except만 사용

try:
        <수행문>
except:
        <오류가 발생했을 때 수행문>

 

동일 오류만 cxcept

<발생오류>와 동일한 오류가 발생했을 경우에만 except를 수행한다.

try:
        <수행문>
except <발생오류>:
        <오류가 발생했을 때 수행문>

 

 

오류와 오류 변수까지 포함한 except

<발생오류>에 대한 오류메시지를 <오류변수>에 담아서 오류메시지를 출력할 때 사용한다.

try:
        <수행문>
except <발생오류> as <오류변수>:
        <오류가 발생했을 때 수행문>
# 예시
try:
    5 / 0
except ZeroDivisionError as e:                    
    print('숫자를 0으로 나눌 수 없습니다.', e)

try ... finally 사용

finally절은 try문 수행 도중 오류가 발생 여부와 상관없이 항상 수행

try:
    f = open('foo.txt', 'w')
    # 무언가를 수행한다.
    (... 생략 ...)

finally:
    f.close()  # 중간에 오류가 발생하더라도 무조건 실행된다.

 

 

try … else 사용

try문 수행중에 오류가 발생하면 except를 수행하고 오류가 없으면 else를 수행한다.

try:
    ...
except [발생오류 [as 오류변수]]:
    ...
else:  # 오류가 없을 경우에만 수행된다.
    ...
try:
    age=int(input('나이를 입력하세요: '))
except:
    print('입력이 정확하지 않습니다.')
else:
    if age <= 18:
        print('미성년자는 출입금지입니다.')
    else:
        print('환영합니다.')

 

 

오류 통과시키기

오류가 발생했을 경우 except를 통과시키도록 함

try:
    f = open("없는 파일", 'r')
except FileNotFoundError:
    pass

 

 

예외 만들기

파이썬 내장 클래스 Exception을 상속하여 예외 처리하기

#__str__ 메서드를 통한 오류메시지 출력
class MyError(Exception):
    def __str__(self):
        return "허용되지 않는 별명입니다."

# nick이 바보이면 raise를 통한 에러 발생시키기
def say_nick(nick):
    if nick == '바보':
        raise MyError()
    print(nick)

try:
    say_nick("천사")
    say_nick("바보")
except MyError:
    print("허용되지 않는 별명입니다.")

# 출력
천사
허용되지 않는 별명입니다.

 

반응형