对于未满足的先决条件,正确的例外是什么?

num*_*dix 3 python exception conditional-statements

在函数中引发什么适当的异常来表明不满足先决条件?

例子:

def print_stats(name, age):
    if name is None:
        raise Exception("name cannot be None")
    if not type(name) is str:
        raise Exception("name must be a string")

    if age is None:
        raise Exception("age cannot be None")
    if age < 0:
        raise Exception("age cannot be negative")

    print("{0} is {1} years old".format(name, age))
Run Code Online (Sandbox Code Playgroud)

小智 6

您应该同时使用TypeErrorValueError

前三个异常应该是TypeErrors,因为我们表明参数的类型不正确。来自文档

例外 TypeError

当操作或函数应用于不适当类型的对象时引发。关联的值是一个字符串,提供有关类型不匹配的详细信息。

然而,最后一个异常应该是 a,ValueError因为age它的类型正确,但值不正确(它是负数)。来自文档

例外 ValueError

当内置操作或函数接收到 具有正确类型但值不适当的参数,并且这种情况未通过更精确的异常(例如 )来描述时引发IndexError