在Python中,“异常”和“错误”这两个词的含义相差无几,都是指程序中的异常情况,表明程序存在着问题。
在20世纪八九十年代,随着C++和Java的出现,“异常”成为流行的编程语言特性,它们取代了错误码。
错误码是从函数中返回的值,说明代码有问题。
使用“异常”一词的好处是,函数返回值只与函数的目的有关,而不必同时用来表明存在错误。
错误码有时也会导致程序问题。比如,Python的find()通常会返回子串的索引,在找不到时则返回-1作为错误码。但-1也可以用来表示字符串末尾的索引,无意中使用-1作为错误码可能会引发错误。
字符串的index()方法在找不到子串时会抛出ValueError异常。如果不处理这个异常,程序就会崩溃,所以最好不要忽略错误。
当异常表示一个实际错误时,异常类的名称往往以Error结尾,比如ValueError、NameError或SyntaxError。
表示在特殊情况下不一定是错误的异常类有StopIteration、KeyboardInterrupt和SystemExit。
函数的返回值应该始终是同一种数据类型。
我们不应该将错误码当作返回值,而应该用异常来暴露错误。
特别是None经常被错误地用作错误码。