抛出什么例外?

What exception to throw? (Python)

本问题已经有最佳答案,请猛点这里访问。

如果我有一个具有两个可选参数的python函数(用于搜索条件),但没有提供任何参数(我至少需要一个参数),那么抛出什么是正确的异常?

如果只需要传递两个参数中的一个呢?如果提供两个异常,抛出什么?或者可以创建两个不同的函数?


您可以在这里找到内置python异常的列表,但请记住,如果这些异常都不符合您所追求的,您可以始终创建自己的异常类型。

我建议使用typeerror(这是您通常在使用的python代码中看到的)。您还可以使用断言错误,并断言至少应向函数提供一个参数。


类型错误是最合适的-这是你通常得到的。


为什么不使用断言呢?

1
assert len(args) > 1,"At least one argument should be passed to the function"


我会抛出一个信息丰富的TypeError

1
2
if no_args or both_args:
    raise TypeError('f() must be passed exactly one of foo=value, bar=value')