在最后一个异常处理程序中,“ causing”异常可作为c .__ context__获得。Python正在使用此信息来呈现更有用的回溯。在Python 2.x下,原始的异常将会丢失,这仅适用于Python 3。
通常,您可以使用它引发一致的异常,同时仍保持原始异常的可访问性(尽管很酷,它是自动从异常处理程序中发生的,但我不知道!):
try:
do_something_involving_http()
except (URLError, socket.timeout) as ex:
raise MyError('Network error') from ex
此处提供了更多信息(以及您可以执行的其他一些非常有用的操作):http ://docs.python.org/3.3/library/exceptions.html