[파이썬] 예외 처리 (try, except, finally)

Python의 예외 처리는 코드 실행 중 예상치 못한 에러가 발생하는 것을 대비하여 에러를 처리하는 방법을 말합니다. 이는 에러가 발생했을 때 적절한 응답을 할 수 있도록 하는 것이며, 이를 위해서는 try, except, finally라는 키워드를 사용합니다.

try

try는 에러가 발생할 수 있는 코드를 실행하기 위해 사용합니다. 이는 다음과 같이 사용합니다.

try:
    # 에러가 발생할 수 있는 코드
except:
    # 에러가 발생했을 때 실행할 코드
finally:
    # 에러가 발생하든 말든 무조건 실행할 코드

except

excepttry블록에서 에러가 발생했을 때 실행할 코드를 작성하기 위해 사용합니다. 이는 다음과 같이 사용합니다.

try:
    # 에러가 발생할 수 있는 코드
except Exception as e:
    # 에러가 발생하면 발생한 에러를 변수 e에 저장하고 실행할 코드
finally:
    # 에러가 발생하든 말든 무조건 실행할 코드

finally

finallytry블록에서 에러가 발생하든 말든 무조건 실행할 코드를 작성하기 위해 사용합니다. 이는 다음과 같이 사용합니다.

try:
    # 에러가 발생할 수 있는 코드
except:
    # 에러가 발생했을 때 실행할 코드
finally:
    # 에러가 발생하든 말든 무조건 실행할 코드

예시

위에서 설명한 try, except, finally를 사용하여 에러 처리를 해보겠습니다. 이를 위해 다음과 같은 코드를 작성해보겠습니다.

try:
    # 0으로 나누는 연산을 실행합니다.
    result = 10 / 0
except ZeroDivisionError as e:
    # 0으로 나누는 연산이 실행되면 에러가 발생합니다.
    # 에러가 발생하면 발생한 에러를 변수 e에 저장하고 에러 메시지를 출력합니다.
    print(e)
finally:
    # 에러가 발생하든 말든 무조건 실행할 코드로
    # 에러가 발생하거나 에러가 발생하지 않았는지 확인하기 위해
    # 변수 result의 값을 출력합니다.
    print(result)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

division by zero
Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
NameError: name 'result' is not defined

위 결과를 보면 ZeroDivisionError가 발생하여 except 블록이 실행되었고, finally 블록에서 result 변수가 정의되지 않았기 때문에 NameError가 발생하여 에러 메시지가 출력되는 것을 확인할 수 있습니다.

결론

Python의 예외 처리는 try, except, finally라는 키워드를 사용하여 에러