从Python 3开始,回溯存储在异常中,因此
raise e(大多数)正确的事情很简单:
try: something()except SomeError as e: try: plan_B() except AlsoFailsError: raise e # or raise e from None - see below
产生的追溯将包括
SomeError在处理过程中发生的其他通知
AlsoFailsError(由于位于
raise e内部
exceptAlsoFailsError)。这具有误导性,因为实际发生的是相反的情况-
我们
AlsoFailsError在尝试从恢复时遇到并处理了它
SomeError。要获取不包含的回溯
AlsoFailsError,请替换
raisee为
raise e from None。
在Python
2中,您将异常类型,值和回溯存储在局部变量中,并使用以下三种参数形式
raise:
try: something()except SomeError: t, v, tb = sys.exc_info() try: plan_B() except AlsoFailsError: raise t, v, tb
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)