57. 파이썬 – 예외 처리 #3 try .. finally 와 try … else

  • 네이버 블로그 공유하기
  • 카카오톡 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기

지난 포스팅에서 예외 처리 상황과 대처 방법에 대해서 공부를 했고 이번 포스팅에서도 파이썬 예외 처리 중 try .. finally 와 try … else 에 대해 공부해 보도록 하겠습니다

파이썬 예외 처리 #3

예외 처리 상황과 대처 방법

try .. finally

try 문에는 finally 절을 사용할 수 있습니다.
finally 절은 try 문을 수행 하는 도중에 예외가 발생 하는것과 상관 없이 항상 수행을 하게 됩니다.
일반적으로 finally 문장은 사용했던 리소스를 close 할 때 많이 사용하게 됩니다

Python
try:
    f = open('foo.txt', 'w')
    # 무 언 가 를 수 행 한 다.

    (... 생 략 ...)

finally:
    f.close() # 중간에 오류가 발생하더라도 무조건 실행 되게 됩니다..

위 코드에서 처럼 foo.txt 파일을 예전에 공부했던 대로 쓰기 모드(‘w’) 로 열어 준 후에 try 문을 수행하게 되면 예외가 발생하는 것과는 관계없이 finally 문장에서 f.close() 로 열려 있던 파일을 닫을 수가 있습니다.

여러 개의 오류 처리

여러 개의 오류를 처리 하기 위해서 try 문을 사용하는 방법입니다.

Python
try:
    ...
except 발생하는 오류 1:
    ...
except 발생하는 오류 2:
    ...

위에서 처럼 try 문을 사용하는 방법을 사용하여 이전에 0 으로 나누었을 때 발생하는 오류와 인덱싱 오류를 아래와 같이 처리 할 수 있습니다.

Python
>>> try:
...     a = [1,2]
...     print(a[3])
...     4/0
... except ZeroDivisionError as e:
...     print(e)
... except IndexError as e:
...     print(e)
...
list index out of range
>>>

일단 위처럼 실행을 하게 되면 list index out of range 오류 메시지가 출력이 됩니다.
그리고 아래 코드와 같이 ZeroDivisionError 와 IndexError 오류를 함께 처리 할 수가 있습니다.

Python
>>> try:
...     a = [1, 2]
...     print(a[3])
...     4/0
... except (ZeroDivisionError, IndexError) as e:
...     print(e)
...
list index out of range
>>>

위 코드처럼 2개 이상의 오류를 함께 처리하기 위해서 괄호를 사용해서 함께 묶어서 처리를 할 수가 있습니다.
list index out of range 오류의 경우는 이전 포스팅에서 말씀드린대로 리스트의 주소는 0 부터 시작하는데 실제로 리스트의 갯수는 2개만 있으므로 a[3] 은 리스트에 없는 주소임을 나타내 주는 오류 입니다.

try … else

try 문에서도 if 문장 에서 처럼 else 문장을 사용 할 수가 있습니다.

Python
try:
    ...
except [발생 오류 [as 오류 변수]]:
    ...
else # 오류가 없을 경우에만 수행이 됩니다.
    ...

위 코드처럼 try 문을 수행을 하다가 오류가 발생 하게 되면 except 문장이 수행이 되며 오류가 없다면 다음에 있는 else 문장이 실행이 됩니다.

try .. else 예제

다음 코드를 살펴 보겠습니다.

Python
>>> try:
...     age = int(input('나이를 입력 해 주세요 :'))
... except:
...     print('입력한 나이가 정확하지 않습니다.')
... else:
...     if age <= 18:
...         print('미성년자는 출입이 제한됩니다.')
...     else:
...         print('성인은 환영합니다~')
...
나이를 입력 해 주세요 :열다섯
입력한 나이가 정확하지 않습니다.
>>>

위 코드 숫자가 아닌 문장을 입력하게 되면 ‘입력한 나이가 정확하지 않습니다.’ 라는 문장을 출력을 하게 됩니다.
이렇게 오류가 없을 경우에만 else 문장이 실행이 됩니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
57. 파이썬 - 예외 처리 #3 try .. finally 와 try … else

Leave a Comment