파이썬에서 예외 체인을 사용하는 표준 방법이 있습니까? 자바 예외 '에 의해 발생'처럼?파이썬 예외 체인
다음은 배경입니다.
나는 하나 개의 주 예외 클래스 DSError
와 모듈이 :
class DSError(Exception):
pass
이 어딘가에이 모듈 내에있을 것입니다 :
try:
v = my_dict[k]
something(v)
except KeyError as e:
raise DSError("no key %s found for %s" % (k, self))
except ValueError as e:
raise DSError("Bad Value %s found for %s" % (v, self))
except DSError as e:
raise DSError("%s raised in %s" % (e, self))
는 기본적으로이 조각은 DSError을 던져 무슨 일이 있었는지 말해해야하며, 왜.
try:
v = my_dict[k]
something(v)
except Exception as e:
raise DSError(self, v, e) # Exception chained...
이 표준 파이썬 방법입니다 것은 try 블록이 다른 예외를 많이 던질 수있는, 그래서 뭔가를 할 수 있다면 내가 선호하는 것이다? 다른 모듈에서 예외 체인을 보지 못했지만 파이썬에서 어떻게 처리 되었습니까?
: 파이썬 2에서 수행 할 수있는
같이, 사용자가 예외 클래스에 속성을 추가 할 수 있습니다 : 기본 쇼 같은 예외 처리 중에 발생한 모든 예외에 의해 파이썬 3 것 와우, 고마워요. @ jamylak! 당신도 내 눈을 고정하기 전에 :-) – Ayman
예, 그래서 그 작은 변화 * *를 만들지 않았기 때문에 여분의 단어를 추가해야했습니다 : ( – jamylak
출력을 어떻게 하시겠습니까? 원래 예외의 스택 추적을 실제로 원한다면 또는 원래 예외를 요약하는 단일 메시지로 자신의 예외를 그냥두고 싶다면? – BrenBarn