1 回答

TA贡献1836条经验 获得超5个赞
在处理异常时,可以将其赋值给一个变量,例如:
except AssertionError as aerr:
saved_exception = aerr
您以后可以访问它,例如:
print(saved_exception)
对于您的代码,这为您提供了没有两个变量的选项,而isError不仅仅是使用saved_exception = None和稍后测试if saved_exception is not None: ...
不确定为以后保存异常(将其用作传递信息的通用接口)有多大用处。也许值得重新考虑一下。
N Chauhan在评论中也提出了一个很好的观点,即AssertionError不是非常适合用来传达此类信息的异常。
对于您更新的问题。如果你想打印回溯是你会在引发异常时看到它,最直接的可能是保存异常信息并使用print_exception()(或它的format_exception朋友):
except ValueError:
save_exc_info = sys.exc_info()
...
traceback.print_exception(*save_exc_info)
您也可以从/使用保存的异常中提取相同的信息,*save_exc_info也可以是:(type(saved_exception), saved_exception, saved_exception.__traceback__对于第一个示例中的保存异常)。
添加回答
举报