多个异常处理程序用于相同的异常

时间:2013-01-22 16:48:45

标签: python exception

我有一个函数的代码,在另一个函数内部调用。(重构的结果)。

所以在被调用的函数中,我有一大块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函数如何以不同的方式处理两个相同类型的异常。

2 个答案:

答案 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.