python中有哪些不同类型的错误?

时间:2015-02-09 11:37:20

标签: python

我知道python中的错误,如NameError,TypeError。

执行python脚本后我们可能遇到的其他不同错误是什么?

1 个答案:

答案 0 :(得分:1)

这些错误可以而且应该由模块和项目在开发时定义 - 因此,没有限制和"关闭"像你要求的一组错误。

Python内省功能允许用户通过交互式控制台查看哪些错误被定义为直接从" Exception" - 但可能会有更多:

>>> [err.__name__ for err in  Exception.__subclasses__()]
['TypeError', 'StopIteration', 'ImportError', 'OSError', 'EOFError', 'RuntimeError', 'NameError', 'AttributeError', 'SyntaxError', 'LookupError', 'ValueError', 'AssertionError', 'ArithmeticError', 'SystemError', 'ReferenceError', 'BufferError', 'MemoryError', 'Warning', 'error', 'Error']

请注意,异常本身是从BaseException派生的,其子类不限于" error"异常,但也用于流量控制中使用的异常:

>>> [err.__name__ for err in  BaseException.__subclasses__()]
['Exception', 'GeneratorExit', 'SystemExit', 'KeyboardInterrupt']

底线:了解错误的总数是不可能的,与学习语言无关。您正在处理的每个函数/库都可以定义新的函数/库,您应该检查文档以了解它们可以抛出哪些异常。

(在旁注中,我上面使用的__sublass__方法确实返回了该类的直接后代的类列表。我们选择要显示的每个类的__name__属性

@ GP89在评论中发布的文件也将显示不是例外的直接后代的错误: https://docs.python.org/2/library/exceptions.html#exception-hierarchy