2015-02-09 41 views
0

我知道Python中的錯誤,如NameError,TypeError。Python中有哪些不同類型的錯誤?

執行python腳本後我們會遇到哪些其他不同的錯誤?

+3

這顯示[內置例外的層次結構](https://docs.python.org/2/library /exceptions.html#exception-hierarchy)(或[for py3](https://docs.python.org/3.4/library/exceptions.html#exception-hierarchy)) – GP89 2015-02-09 11:40:35

+0

一般而言,您可以總是子類'異常',所以不可能列出所有可能的異常。 – 2015-02-09 11:44:44

+0

除此之外,它可以是'BaseException'的任何子類。在Python <= 2.5中,你也可以引發一個字符串...... – 2015-02-09 11:48:09

回答

1

這些錯誤可以,也應該由模塊和項目在開發時定義 - 因此,沒有像您要求的那樣限制和「關閉」一組錯誤。

Python的自省能力讓一見,通過交互式控制檯,哪些錯誤是直接從「異常」衍生的定義 - 但也可能有多種:

>>> [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派生,其子類不限於「錯誤」的異常,但在流量控制中使用,以及例外:

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

底線:知道錯誤的總數是不可能的和不相關的用於學習的語言。您正在處理的每個函數/庫都可以定義新函數/庫,並且您應該檢查文檔以瞭解它們可以拋出哪些異常。

(在一個側面說明,我上面使用並返回是類的直接後代的類的列表。該__sublass__方法我他們選擇每個類的__name__屬性顯示)

文檔發佈通過@ GP89在評論中也會顯示錯誤,這些錯誤不是直接的後代異常: https://docs.python.org/2/library/exceptions.html#exception-hierarchy