抛出什么例外? (蟒蛇)

时间:2011-03-25 09:01:21

标签: python exception

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

如果我只需要传递两个参数中的一个怎么办?如果提供两个,会抛出什么例外?或者可能会创建两个不同的函数?

4 个答案:

答案 0 :(得分:4)

TypeError是最合适的 - 这是你经常得到的。

答案 1 :(得分:4)

你可以找到内置Python exceptions here的列表,但是请记住,如果这些都不符合您的要求,您可以随时创建自己的异常。

我建议使用 TypeError (这是您通常在使用的Python代码中看到的)。您还可以使用 AssertionError ,并声明至少应该为该函数提供一个参数。

答案 2 :(得分:3)

我会抛出信息丰富的TypeError

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

答案 3 :(得分:3)

为什么不使用断言?

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