[파이썬] 예외 처리 (try, except, finally)
Python의 예외 처리는 코드 실행 중 예상치 못한 에러가 발생하는 것을 대비하여 에러를 처리하는 방법을 말합니다. 이는 에러가 발생했을 때 적절한 응답을 할 수 있도록 하는 것이며, 이를 위해서는 try
, except
, finally
라는 키워드를 사용합니다.
try
try
는 에러가 발생할 수 있는 코드를 실행하기 위해 사용합니다. 이는 다음과 같이 사용합니다.
try:
# 에러가 발생할 수 있는 코드
except:
# 에러가 발생했을 때 실행할 코드
finally:
# 에러가 발생하든 말든 무조건 실행할 코드
except
except
는 try
블록에서 에러가 발생했을 때 실행할 코드를 작성하기 위해 사용합니다. 이는 다음과 같이 사용합니다.
try:
# 에러가 발생할 수 있는 코드
except Exception as e:
# 에러가 발생하면 발생한 에러를 변수 e에 저장하고 실행할 코드
finally:
# 에러가 발생하든 말든 무조건 실행할 코드
finally
finally
는 try
블록에서 에러가 발생하든 말든 무조건 실행할 코드를 작성하기 위해 사용합니다. 이는 다음과 같이 사용합니다.
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
라는 키워드를 사용하여 에러