개요
프로그래밍을 하다 보면 수많은 오류를 직면하기 때문에 예외 처리는 거의 필수에 가까운 요소에 해당한다. 내 경우에는 보통 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