我有一个函数的代码,在另一个函数内部调用。(重构的结果)。
所以在被调用的函数中,我有一大块try-catch语句为。
def Called():
try:
#All statements for the function in the try block.
except A:
# Exception handler.
except B:
# Exception handler.
except A:
# Exception handler.
我遇到的问题是我需要捕获两个相同类型的异常(在Called函数的不同位置)。然后由Calling函数处理。
一种方法是在Called函数中定义两个try-except块。但我不明白Calling函数如何以不同的方式处理两个相同类型的异常。
答案 0 :(得分:4)
这不会像宣传的那样有效;只会执行第一个except A
子句。您需要的是要在子句中使用一些逻辑进一步检查异常,或者(如果try
块内的代码允许)多个try
- except
块。
前一种方法的例子:
try:
something_that_might_fail()
except A as e:
if e.is_harmless():
pass
elif e.is_something_we_can_handle():
handle_it()
else:
raise # re-raise in the hope it gets handled further up the stack
答案 1 :(得分:0)
我认为这会起作用
def Called():
try:
#All statements for the function in the try block.
except A:
try:
do_someting()
except B:
try:
do_somthing_else()
except:
except A:
# Exception handler.