점프투파이썬 예외처리 관련 질문이 있습니다.
점프투파이썬 위키독스 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 님 311
M 2022년 1월 16일 2:29 오후
1개의 답변이 있습니다. 1 / 1 Page
안녕하세요.
e는 MyError클래스의 객체입니다.
MyError 예외가 발생하면 파이썬이 MyError의 객체를 생성하여 오류를 발생시키고 그 오류를 e라는 객체로 except 구문에서 얻을 수 있습니다.
그리고 클래스의 객체를 print(e)
처럼 출력하면 클래스의 __str__
메서드가 출력됩니다.
보다 자세한 내용은 다음을 참고해 보세요.
박응용 님
M 2022년 1월 16일 4:09 오후