在C#
编程时,我通常会编写以下参数验证码:
void Process(object item) {
if (item == null) throw ArgumentNullException();
// code
}
在Python
中进行类似验证是'Pythonic'吗?我真的不希望任何人通过None
到Process
方法。我应该使用什么类型的Python Exception
? (没有标准ArgError
或类似的东西)
def Process(item):
if item == None: raise ArgNoneError('item')
# code
由于
答案 0 :(得分:5)
通常情况下,你只是尝试使用你得到的参数 - 如果有人将None
传递给你的函数,它无论如何都会失败。没有任何好处就没有必要为代码增加复杂性。恰恰相反 - 通常这样的测试会阻止您的代码在没有测试的情况下正常工作。
如果你想提出一些错误,请使用TypeError
- 它就是为了这个目的。
答案 1 :(得分:3)
使用TypeError
:
异常 TypeError
将操作或函数应用于不适当类型的对象时触发。关联值是一个字符串,提供有关类型不匹配的详细信息。