4

我想编写一个函数来报告来自另一个函数的不同结果,这些结果中有一些例外,但我无法将它们转换为 if 语句

例子 :

如果 f(x) 引发 ValueError,那么我的函数必须返回字符串 'Value' 如果 f(x) 引发 TypeError,那么我的函数必须返回字符串 'Type

但我不知道如何在 Python 中做到这一点。有人可以帮我吗。

我的代码是这样的: -

def reporter(f,x):    

    if f(x) is ValueError():
        return 'Value'
    elif f(x) is E2OddException():
        return  'E2Odd'
    elif f(x) is E2Exception("New Yorker"):
        return 'E2'
    elif f(x) is None:
        return 'no problem'
    else:
        return 'generic'
4

3 回答 3

16

您必须try-except在 Python 中处理异常:-

def reporter(f,x): 
    try:
        if f(x):  
            # f(x) is not None and not throw any exception. Your last case
            return "Generic"
        # f(x) is `None`
        return "No Problem"
    except ValueError:
        return 'Value'
    except TypeError:
        return 'Type'
    except E2OddException:
        return 'E2Odd'
于 2013-01-25T06:59:36.557 回答
2
def reporter(f,x):    
    try:
        if f(x) is None:
            return 'no problem'
        else:
            return 'generic'
    except ValueError:
        return 'Value'
    except E2OddException:
        return  'E2Odd'
    except E2Exception:
        return 'E2'
于 2013-01-25T07:00:22.070 回答
0

你把你的函数调用放在一个try-except像这样的结构中

try:
    f(x)
except ValueError as e:
    return "Value"
except E20ddException as e:
    return "E20dd"

函数本身不返回异常,异常被外部捕获。

于 2013-01-25T06:59:14.653 回答