Python

[Python] 예외 처리 - try / except / else / finally

비번변경 2024. 10. 17. 12:00

개요

프로그래밍을 하다 보면 수많은 오류를 직면하기 때문에 예외 처리는 거의 필수에 가까운 요소에 해당한다. 내 경우에는 보통 try - except 문을 사용해 예외가 발생한 경우에 대해서만 처리하는 상황이 대다수였는데, 최근에 예외가 발생하지 않은 경우에 실행되는 else문이 별도로 있다는 것을 알게 되었다. (Java에는 없었던 것 같다…….)

그래서 이번 글에서는 Python에서의 예외 처리 흐름에 대해서 간단히 짚고 넘어간다.

 

 

try - except

가장 기본적인 구문으로, try 절 내에 코드 실행 중 에러가 발생하는 상황을 처리하기 위함이다.

try:
    raise Exception
except:
    print("Oops! Something wrong.")

except 구문에 처리할 예외를 지정하지 않으면 모든 예외에 대해서 처리한다.

 

발생하는 예외마다 처리를 달리할 필요가 있다면 예외를 지정한 except 절을 여러 번 사용하면 된다.

try:
    raise ZeroDivisionError
except ZeroDivisionError as e:
    print(type(e).__name__)
except Exception as e:
    print(type(e).__name__)

 

 

try - except - else

예외 처리 구문에서 except 절은 try 절에서 예외가 발생했을 때 실행되는 반면, else 절은 예외가 발생하지 않았을 때 실행된다.

try:
    a = 1
except:
    print("Oops! Something wrong.")
else:
    print('All done.')

try - except - else 구문은 예외 발생 여부에 따라 동작이 달라져야 하는 경우 사용할 수 있다.

 

 

 

try - except - else - finally

예외 처리 구문에서 finally 절은 try 절 내에서의 예외 발생 여부와 관계없이 항상 실행된다.

try:
    a = 1
except:
    state = 'FAILED'
else:
    state = 'PASSED'
finally:
    print(f'[{state}] All done.')

finally를 사용할 때 else 절은 없어도 된다. 일반적으로 예외 처리할 때는 try - except 구문을 기본으로 하고, 필요에 따라 else 절이나 finally 절을 추가하는 방식으로 구현하게 되는 것 같다.

 

 

참고 문서

https://gomguard.tistory.com/122