프로그램을 실행하고 10과 5를 순차적으로 입력하면 BigNumberError가 발생하고 예외 처리가 실행돼서 마지막에 추가한 except 문의 안내 문구를 출력합니다. 이 상태로는 ValueError와 큰 차이가 없습니다.
이번에는 BigNumberError 클래스를 완성해 보겠습니다. pass 문 대신 __init__() 생성자와 __str__() 메서드를 추가합니다. 생성자에서는 오류 메시지를 의미하는 msg를 전달받아 인스턴스 변수로 설정하고, __str__() 메서드에서는 인스턴스 변수 msg를 반환하게 합니다. 이제 BigNumberError를 발생시킬 때 필요한 문구를 추가해 더 자세한 오류 내용을 출력할 수 있습니다.
class BigNumberError(Exception): # 사용자 정의 예외 처리, Exception 클래스 상속
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
오류가 발생하는 시점에 어떤 값을 입력했는지 출력해 보겠습니다. try 문에서 BigNumberError를 발생시키는 부분에 입력받은 두 값을 문자열 형태로 넣습니다. 이 문자열은 __init__() 생성자의 msg로 들어가게 됩니다. 그런 다음 __str__() 메서드에 의해 msg 인스턴스 변수가 반환됩니다. 그리고 except 문에서는 as를 이용해 err이라는 이름으로 반환된 오류 내용을 받고 이를 print() 문으로 출력합니다.