점프투파이썬 예외처리 관련 질문이 있습니다.

점프투파이썬 위키독스 5-4 예외처리 마지막 예시 관련해서 질문 드립니다.
https://wikidocs.net/30

class MyError(Exception):
    def __str__(self):
        return "허용x"

def say_nick(nick):
    if nick == '바보':
        raise MyError()
    print(nick)
try:
    say_nick("바보")
except MyError as e:
    print(e)                
class MyError(Exception):
    pass

를 했을 때는

except MyError as e:
    print(e)

여기서 오류메시지가 출력이 되지 않았습니다..
Exception을 상속하게 만들어진 임의의 오류라 오류메시지가 없다고 생각하는데

class MyError(Exception):
    def __str__(self):
        return "허용x"

클래스 밑에 str(self) 함수선언하고 "허용x"를 리턴 한게

except MyError as e:
    print(e)

여기에서 어떻게 출력이 된건지 궁금해요.

제일위에서 __str__함수가 리턴한 값이 오류메시지변수e에 들어가는걸까요?
아니면 오류메시지변수e라는 자체가 아래 2줄을 내포하는 뜻인걸까요??

def __str__(self):
    return "허용x"

정리를 좀해서 질문을 드리고 싶은데
머리속에서 정리를 하면 할수록 꼬이는 느낌이라
보시기 조금 불편하시더라도 양해 부탁드립니다 ㅠㅠ..

lustel 427

M 2022년 1월 16일 2:29 오후

목록으로
1개의 답변이 있습니다. 1 / 1 Page

안녕하세요.

e는 MyError클래스의 객체입니다.
MyError 예외가 발생하면 파이썬이 MyError의 객체를 생성하여 오류를 발생시키고 그 오류를 e라는 객체로 except 구문에서 얻을 수 있습니다.

그리고 클래스의 객체를 print(e) 처럼 출력하면 클래스의 __str__ 메서드가 출력됩니다.

보다 자세한 내용은 다음을 참고해 보세요.

https://wikidocs.net/134994

박응용

M 2022년 1월 16일 4:09 오후