0

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

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

4

2 回答 2

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
于 2013-01-22T16:51:56.547 回答
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.
于 2018-11-28T05:50:01.177 回答