Python 异常继承体系(version python3.4)
The class hierarchy for built-in exceptions is:
BaseException 所有内建的异常的基类
+-- SystemExit 由sys.exit()函数引发。当它不处理时,Python 解释器退出
+-- KeyboardInterrupt 当用户点击中断键 (通常ctrl + C) 时引发
+-- GeneratorExit 当调用一种generator的close()方法时引发。它直接继承BaseException而不是Exception,因为它是从技术上讲不是一个错误。
+-- Exception 所有内置的、 非系统退出异常是从该类派生的。应该从该类派生所有用户定义的异常。
+-- StopIteration
+-- ArithmeticError
| +-- FloatingPointError
| +-- OverflowError
| +-- ZeroDivisionError
+-- AssertionError
+-- AttributeError
+-- BufferError 当缓冲区相关的操作无法执行时引发
+-- EOFError 当input()函数在文件尾(EOF)的条件下没有读到任何数据时被引发
+-- ImportError 当import语句无法找到模块定义时引发
+-- LookupError 当用于映射或序列的键或索引无效时引发
| +-- IndexError
| +-- KeyError
+-- MemoryError 当OOM时被引发,但是其状态仍然能被拯救
+-- NameError 当一个局部或者全局的名字没有找到时被引发
| +-- UnboundLocalError
+-- OSError 当一个系统函数返回一个与系统相关的错误时引发。
| +-- BlockingIOError
| +-- ChildProcessError
| +-- ConnectionError
| | +-- BrokenPipeError
| | +-- ConnectionAbortedError
| | +-- ConnectionRefusedError
| | +-- ConnectionResetError
| +-- FileExistsError
| +-- FileNotFoundError
| +-- InterruptedError
| +-- IsADirectoryError
| +-- NotADirectoryError
| +-- PermissionError
| +-- ProcessLookupError
| +-- TimeoutError
+-- ReferenceError 当访问一个已经被GC的对象时被引发
+-- RuntimeError 当一个错误不能被其他所有的错误检测到时被引发
| +-- NotImplementedError
+-- SyntaxError 当解析器遇到语法错误时引发。非运行时错误。
| +-- IndentationError
| +-- TabError
+-- SystemError 当解释器发现一个内部错误时引发
+-- TypeError 当一个操作符或者函数应用到一个不合适的对象时引发
+-- ValueError 当一个内置操作符或函数接收到一个类型正确但是值不合适的时候被引发
| +-- UnicodeError
| +-- UnicodeDecodeError
| +-- UnicodeEncodeError
| +-- UnicodeTranslateError
+-- Warning
+-- DeprecationWarning
+-- PendingDeprecationWarning
+-- RuntimeWarning
+-- SyntaxWarning
+-- UserWarning
+-- FutureWarning
+-- ImportWarning
+-- UnicodeWarning
+-- BytesWarning
+-- ResourceWarning