지난 포스팅에서 예외 처리 상황과 대처 방법에 대해서 공부를 했고 이번 포스팅에서도 파이썬 예외 처리 중 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 문장이 실행이 됩니다.
- 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
