본문으로 건너뛰기

예외처리

예외처리

  • try - except 문을 사용
  • try문을 먼저 실행하고 오류 발생시 except문에서 알맞은 오류처리를 실행
  • 오류마다 처리할 수도 있고, 그냥 한번에 처리도 가능
try:
print("나누기 전용 계산기")
nums = []
nums.append(int(input("첫 번째 숫자 : ")))
nums.append(int(input("두 번째 숫자 : ")))
nums.append(nums[0] / nums[1])

print("{0} / {1} = {2}".format(nums[0], nums[1], nums[2]))

except ValueError:
print("에러! 잘못된 값 입력")
except ZeroDivisionError as err:
print(err)
except Exception as err:
print("알 수 없는 에러 발생")
print(err)

에러 발생시키기

  • raise {에러타입} 을 통해 에러 발생
try:
num1 = int(input())
num2 = int(input())
if num1 >= 10 or num2 >= 10:
# 에러 발생
raise ValueError
print("{0} / {1} = {2}".format(num1, num2, num1/num2))
except ValueError:
print("잘못된 값 입력. 한자릿수만 가능")

사용자 지정 예외처리

  • 지정된 에러 외에 사용자가 예외처리를 선언 할 수 있다.
  • 에러는 class 문으로 선언
class BigNumError(Exception):
pass

try:
num1 = int(input())
num2 = int(input())
if num1 >= 10 or num2 >= 10:
# 에러 발생
raise BigNumError
print("{0} / {1} = {2}".format(num1, num2, num1/num2))
except BigNumError:
print("에러가 발생")
  • 에러 메세지 설정도 가능
class BigNumError(Exception):
def __init__(self, msg):
self.msg = msg

def __str__(self):
return self.msg

try:
num1 = int(input())
num2 = int(input())
if num1 >= 10 or num2 >= 10:
# 에러 발생
raise BigNumError("입력값 : {0}, {1}".format(num1, num2))
print("{0} / {1} = {2}".format(num1, num2, num1/num2))
except ValueError:
print("잘못된 값 입력. 한자릿수만 가능")
except BigNumError as err:
print("에러가 발생")
print(err)

finally

  • 오류든 아니든 무조건 실행
finally:
print("계산기 종료")