지난 포스팅에서 예외 처리 상황과 대처 방법에 대해서 공부를 했고 이번 포스팅에서도 파이썬 예외 처리 중 try .. finally 와 try … else 에 대해 공부해 보도록 하겠습니다
- 56. 파이썬 – 예외 처리 #2 예외 처리 상황과 대처 방법
- 55. 파이썬 – 패키지. relative 패키지와 예외 처리
- 54. 파이썬 – 패키지 __init__.py 의 용도
파이썬 예외 처리 #3
예외 처리 상황과 대처 방법
try .. finally
try 문에는 finally 절을 사용할 수 있습니다.
finally 절은 try 문을 수행 하는 도중에 예외가 발생 하는것과 상관 없이 항상 수행을 하게 됩니다.
일반적으로 finally 문장은 사용했던 리소스를 close 할 때 많이 사용하게 됩니다
try:
f = open('foo.txt', 'w')
# 무 언 가 를 수 행 한 다.
(... 생 략 ...)
finally:
f.close() # 중간에 오류가 발생하더라도 무조건 실행 되게 됩니다..
위 코드에서 처럼 foo.txt 파일을 예전에 공부했던 대로 쓰기 모드(‘w’) 로 열어 준 후에 try 문을 수행하게 되면 예외가 발생하는 것과는 관계없이 finally 문장에서 f.close() 로 열려 있던 파일을 닫을 수가 있습니다.
여러 개의 오류 처리
여러 개의 오류를 처리 하기 위해서 try 문을 사용하는 방법입니다.
try:
...
except 발생하는 오류 1:
...
except 발생하는 오류 2:
...
위에서 처럼 try 문을 사용하는 방법을 사용하여 이전에 0 으로 나누었을 때 발생하는 오류와 인덱싱 오류를 아래와 같이 처리 할 수 있습니다.
>>> 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 오류를 함께 처리 할 수가 있습니다.
>>> 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 문장을 사용 할 수가 있습니다.
try:
...
except [발생 오류 [as 오류 변수]]:
...
else # 오류가 없을 경우에만 수행이 됩니다.
...
위 코드처럼 try 문을 수행을 하다가 오류가 발생 하게 되면 except 문장이 수행이 되며 오류가 없다면 다음에 있는 else 문장이 실행이 됩니다.
try .. else 예제
다음 코드를 살펴 보겠습니다.
>>> try:
... age = int(input('나이를 입력 해 주세요 :'))
... except:
... print('입력한 나이가 정확하지 않습니다.')
... else:
... if age <= 18:
... print('미성년자는 출입이 제한됩니다.')
... else:
... print('성인은 환영합니다~')
...
나이를 입력 해 주세요 :열다섯
입력한 나이가 정확하지 않습니다.
>>>
위 코드 숫자가 아닌 문장을 입력하게 되면 ‘입력한 나이가 정확하지 않습니다.’ 라는 문장을 출력을 하게 됩니다.
이렇게 오류가 없을 경우에만 else 문장이 실행이 됩니다.
- 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
