1. 기본적인 try... except... finally, 그리고 임의로 raise 하기
# 예외처리
>>> def calc():
try:
num1 = int(input("첫 번재 숫자 : "))
num2 = int(input("두 번째 숫자 : "))
# 기본 예외 raise 시키기
if num1 == 0 or num2 == 0:
raise Exception("0은 입력할 수 없습나다.")
num3 = num1 / num2
print("{0} / {1} = {2}".format(num1, num2, num1 / num2))
except Exception as err:
print("OtherError : ", err)
finally:
print("exit")
>>> calc()
첫 번재 숫자 : 6
두 번째 숫자 : 3
6 / 3 = 2.0
exit
>>> calc()
첫 번재 숫자 : 6
두 번째 숫자 : 삼
OtherError : invalid literal for int() with base 10: '삼'
exit
>>> calc()
첫 번재 숫자 : 2
두 번째 숫자 : 0
OtherError : 0은 입력할 수 없습나다.
exit
2. 특정예외 처리
# 특정예외 처리
>>> def calc():
try:
num1 = int(input("첫 번재 숫자 : "))
num2 = int(input("두 번째 숫자 : "))
num3 = num1 / num2
print("{0} / {1} = {2}".format(num1, num2, num1 / num2))
except ValueError as err:
print("ValueError : ", err)
except Exception as err:
print("OtherError : ", err)
finally:
print("exit")
>>> calc()
첫 번재 숫자 : 6
두 번째 숫자 : 삼
ValueError : invalid literal for int() with base 10: '삼'
exit
3. 사용자정의 예외처리
# 사용자정의 예외처리
>>> class CustomError(Exception):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
>>> def calc():
try:
num1 = int(input("첫 번재 숫자 : "))
num2 = int(input("두 번째 숫자 : "))
if num1 == 0 or num2 == 0:
raise CustomError("영을 입력할 수 없습니다.")
num3 = num1 / num2
print("{0} / {1} = {2}".format(num1, num2, num1 / num2))
except CustomError as err:
print("CustomError : ", err)
except ValueError as err:
print("ValueError : ", err)
except Exception as err:
print("OtherError : ", err)
finally:
print("exit")
>>> calc()
첫 번재 숫자 : 6
두 번째 숫자 : 0
CustomError : 영을 입력할 수 없습니다.
exit