본문 바로가기

Python

[파이썬]#2 예외처리

3. 예외처리

try 구문을 사용하면 예외를 적절하게 처리할 수 있습니다.

try:
      < 예외 발생가능성이 있는 문장>
except <예외 종류>:
      <예외 처리 문장>
except (예외 1, 예외 2):
      <예외 처리 문장>
except 예외 as 인자:
      <예외 처리 문장>
else:
      <예외가 발생하지 않은 경우, 수행할 문장>
finally:
      <예외 발생 유무에 상관없이 try 블록 이후 수행할 문장>

위에 보이는 것이 try 구문 입니다.

예외 발생이 예상되는 부분에 대항 'try'블록에 작성하고, 예외 발생시 처리리를 담당하는 부분을 'except' 블록에 작성합니다.
"except' 블록은 예외 처리 방법에 따라 3가지 방식이 있습니다. 예외가 발생하지 않은 경우 'else' 블록의 문장이 수행되고, 예외가 발생하든 하지않든
'finally' 블록은 항상 사용합니다. 'else', 'finally'블록은 선택사항으로 생략이 가능합니다.


위의 설명을 순서도로 표시한 것입니다.
한눈에 알아보기 쉽죠?



왼쪽 예제는 함수의 인수가 '0'이라서 'ZeroDivisionError'가 발생한 것입니다.
이러한 예외를 처리하기 위해 오른쪽에서 보이 듯이 try 구문을 사용하였습니다.
예외가 발생 하였으므로 except 블록을 실행시킵니다.


위의 예제는 a에 5, b에 string을 넣어서 a/b로 계산시 나타나는 예외입니다.
수식계산시 string을 넣었으므로 TypeError가 일어나 그에 해당되는 예외 처리 문장이 출력 된것 입니다.


다음은 else와 finally를 사용한 예제입니다.
코드에서 아무런 예외가 발생하지 않았기 때문에 else 부분에서 결과가 출력되고
예외가 발생하든 말든 finally의 블럭이 출력되므로  '항상 finally 블록은 수행됩니다.'가 출력된다.