더북(TheBook)

프로그램을 실행하고 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() 문으로 출력합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.