创建自定义异常或使用现有异常

2024-04-26 00:34:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个功能:

def f(x):

    if x == 'dog':
        print('ok')
    elif x == 'cat':
        print('ok')
    else:
        raise MyException('Not an x i would expect')

我正在添加一个异常,以防有一天我将任何提供x的东西更改为f(),然后忘记修复f(),这样我就可以很容易地找到问题。你知道吗

  1. 这是不是在需要时用“记住”来改变f()的错误方法?你知道吗

其次,f()是另一个函数的一部分,该函数可能获得处理某些异常的装饰器:

@an_exception_handler
def g(x):
    f(x)
    return 1000 

我不希望@an_exception_handler意外地处理MyException(例如,如果MyExceptionValueError的子级,@an_exception_handler处理ValueError)。你知道吗

  1. MyException应该是自定义异常,还是使用现有的很少发生的异常?你知道吗

Tags: 函数功能anifdefexceptionokelse
1条回答
网友
1楼 · 发布于 2024-04-26 00:34:12

如果您真的不想使MyException成为ValueError的子类,那么您肯定应该创建自己的异常类,除非找到另一个描述异常的异常类。你知道吗

老实说,你处理“除了这个以外的所有ValueError”的方式(从概念上说,这肯定是一个ValueError)感觉有点不协调。你想用它做什么?你知道吗

正如pm2ring在评论中指出的那样,断言也是一个很好的方法。可能比另一个例外要好。你知道吗

相关问题 更多 >