【发布时间】:2017-02-09 18:30:44
【问题描述】:
我想知道python中是否有针对这个用例的标准机制:
try:
do_a()
if something_happens():
raise DelayedException # is really only raised after do_b()
do_b()
except DelayedException as de:
# handle de after the entire try/except block completed
我显然可以将异常信息存储在一个变量中以供以后处理,但我想知道 python 中是否内置了这样的机制(3.x 是否有影响)。
编辑: 澄清一下,在我的用例中,异常处理需要 do_b() 的结果。
【问题讨论】:
-
如果
do_b()引发了自己的异常,您希望发生什么? -
不将
do_something()包装在 try-finally 块中(do_b()在 finally 块中)这样做? -
不,不是一回事。这看起来不像是异常的用例;只需记录错误并稍后检查。
-
@dhke:在
except之后而不是之前运行do_b。 -
@user2357112 你在想一个try-except-finally,是吗?要在异常处理程序之前获取 finally,您需要一个内部 try-finally 块。
标签: python python-3.x exception