在python中引发延迟异常?
我想知道python中是否有用于此用例的标准机制:在python中引发延迟异常?,python,python-3.x,exception,Python,Python 3.x,Exception,我想知道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 很明显,我可以将异
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()的结果。是的,但它很难看:
try:
do_a()
try:
if do_something():
raise DelayedException()
finally:
do_b()
except DelayedException:
pass
如果
do_b()
引发了自己的异常,您希望发生什么?在try finally块中包装do_something()
时(在finally块中使用do_b()
时)不这样做吗?不,一件事也没有。这看起来不像是异常的用例;只需记录错误并稍后检查。@dhke:That在except
之后而不是之前运行do_b
。@user2357112您正在考虑尝试,但最后除外,是吗?要获得异常处理程序之前的finally,您需要一个内部try finally块。它确实有点难看!我花了几本书才明白这是怎么回事,所以我想这不是一个好兆头,也许使用变量会让意图更清楚。