[References]
http://pythonstudy.xyz
1. try ~ except
try:
예외를 유발할 수 있는 구문
except <예외 종류>:
예외 처리를 수행하는 구문
try:
a = 10 / 0
except ZeroDivisionError:
print('나누는 수는 0이 될 수 없습니다!')
# 나누는 수는 0이 될 수 없습니다!
try:
a = int(input("첫 번째 숫자를 입력하세요: "))
b = int(input("두 번째 숫자를 입력하세요: "))
print("a + b = ", a + b)
except ValueError:
print('입력값이 적절하지 않습니다.')
첫 번째 숫자를 입력하세요: 10
두 번째 숫자를 입력하세요: 이십
# 입력값이 적절하지 않습니다.
except 절은 여러 번 등장이 가능하다.
try:
a = int(input("피제수를 입력하세요: "))
b = int(input("제수를 입력하세요: "))
print("a / b = ", a / b)
except ValueError:
print('입력값이 적절하지 않습니다.')
except ZeroDivisionError:
print('나누는 수는 0이 될 수 없습니다!')
Tuple을 이용하여 예외 처리 영역을 합칠 수도 있다.
try:
a = int(input("피제수를 입력하세요: "))
b = int(input("제수를 입력하세요: "))
print("a / b = ", a / b)
except (ValueError, ZeroDivisionError):
print('나누는 수가 0이거나 입력값이 적절하지 않습니다.')
객체를 통해서 예외를 처리할 수 있다.
try:
a = 50 / "이십"
except TypeError as e:
print('예외: ', e.args[0])
# 예외: unsupported operand type(s) for /: 'int' and 'str'
2. try ~ except ~ else
(1) except 절이 예외가 발생되었을 때 작업을 처리하는 영역이라면, else 절은 예외가 발생하지 않았을 때 작업이 수행되는 영역이다.
(2) else 절은 except 절의 가장 마지막에 등장하여야 한다.
(3) 필요에 따라 else 절을 달지 않을 수도 있다. (선택적 사용 가능)
try:
예외를 유발할 수 있는 구문
except <예외 종류>:
예외 처리를 수행하는 구문
else:
예외가 발생하지 않을 경우 수행할 구문
try:
f = open('test.txt', 'r')
except IOError:
print('파일을 열지 못했습니다.')
else:
print('text.txt : ', f.read()) # text.txt : 가나다
f.close()
3. try ~ except ~ finally
(1) 예외가 발생하든 말든 실행되는 영역
(2) try 영역이 실행되고 나서 예외 발생 여부와 상관없이 무조건 수행되는 영역
(3) else 절과 같이 선택적으로 사용이 가능하다.
try:
예외를 유발할 수 있는 구문
except <예외 종류>:
예외 처리를 수행하는 구문
finally:
예외가 발생 여부와 상관없이 항상 실행되는 구문
try:
a = 10 / 0
except ZeroDivisionError:
print('나누는 수는 0이 될 수 없습니다!')
finally:
print('무조건 실행되는 영역')
# 나누는 수는 0이 될 수 없습니다!
# 무조건 실행되는 영역
4. raise
개발자가 의도적으로 예외를 발생시킬 경우 사용
raise [예외]
raise [예외(데이터)]
raise NameError
# Traceback (most recent call last):
# File "<pyshell#44>", line 1, in <module>
# raise NameError
# NameError
raise NameError('예외 발생!')
# Traceback (most recent call last):
# File "<pyshell#45>", line 1, in <module>
# raise NameError('예외 발생!')
# NameError: 예외 발생!
try:
a = int(input("피제수를 입력하세요: "))
b = int(input("제수를 입력하세요: "))
if a <= 0 or b <= 0:
raise ArithmeticError('피제수 혹은 제수가 0 이하일 수 있습니다.')
except ArithmeticError as e:
print('예외 발생: ', e.args[0])
# 피제수를 입력하세요: 2000
# 제수를 입력하세요: -10
# 예외 발생: 피제수 혹은 제수가 0 이하일 수 있습니다.