【发布时间】:2017-02-11 15:43:38
【问题描述】:
我正在开发一个可以raise 多个Exceptions 的函数。我想在它们的 except 块中处理这些Exceptions,然后返回带有自定义消息和回溯的结果。问题是finally 是有保证的,所以我不能在else 块内返回任何东西。
如果引发了一些Exception,则此代码有效,但如果没有Exception,则此代码无效。在这种情况下,我只想返回{'success':True}。
所以从这段代码:
def foo():
try:
#some code
return {'success':True}
except FirstException:
tb = traceback.format_exc()
msg = 'There was FirstExc'
return {'success':False,
'tb':tb,
'msg':msg}
except SecondException:
tb = traceback.format_exc()
msg = 'There was SecondExc'
return {'success':False,
'tb':tb,
'msg':msg}
...
我不想重复returns。我试过了:
def foo():
try:
pass
except FirstException:
tb = traceback.format_exc()
msg = 'There was FirstExc'
except SecondException:
tb = traceback.format_exc()
msg = 'There was SecondExc'
else:
return {'success':True}
finally:
return {'success':False,
'tb':tb,
'msg':msg}
你知道怎么做吗?我知道我可以将return {'success':True} 放入try 块中,删除finally 和else 块并将return {'success':False,'tb':tb,'msg':msg} 添加到每个except 块中,但是有很多except 块,因此代码会重复多次.
还有其他选择吗?
【问题讨论】:
标签: python python-2.7 exception