我有一个功能:
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()
,我会添加例外,以便我可以轻松找到问题。
f()
?其次,f()
是另一个函数的一部分,可能会得到一个处理某些异常的装饰器:
@an_exception_handler
def g(x):
f(x)
return 1000
我不希望@an_exception_handler
意外处理MyException
(例如,如果MyException
是ValueError
的孩子,@an_exception_handler
处理{{} 1}})。
ValueError
应该是自定义异常,还是使用现有的很少发生的异常?答案 0 :(得分:-1)
如果你真的不想让MyException
成为ValueError
的子类,你绝对应该创建自己的异常类,除非你找到另一个描述异常同样好的异常类。
老实说,你处理“所有ValueError
但是这个”的方式(并且概念上这绝对是一个ValueError
)感觉有些不一致。你想用它做什么?
正如PM 2Ring在他的评论中指出的那样,断言也是一个很好的方法。可能比另一个例外更好。