内置Exceptions
Python中,所有异常都必须是派生自BaseException的类的实例。
以下是Python Exception家谱:
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- StopIteration
+-- ArithmeticError
| +-- FloatingPointError
| +-- OverflowError
| +-- ZeroDivisionError
+-- AssertionError
+-- AttributeError
+-- BufferError
+-- EnvironmentError
| +-- IOError
| +-- OSError
| +-- WindowsError (Windows)
| +-- VMSError (VMS)
+-- EOFError
+-- ImportError
+-- LookupError
| +-- IndexError
| +-- KeyError
+-- MemoryError
+-- NameError
| +-- UnboundLocalError
+-- ReferenceError
+-- RuntimeError
| +-- NotImplementedError
+-- SyntaxError
| +-- IndentationError
| +-- TabError
+-- SystemError
+-- TypeError
+-- ValueError
| +-- UnicodeError
| +-- UnicodeDecodeError
| +-- UnicodeEncodeError
| +-- UnicodeTranslateError
+-- Warning
+-- DeprecationWarning
+-- PendingDeprecationWarning
+-- RuntimeWarning
+-- SyntaxWarning
+-- UserWarning
+-- FutureWarning
+-- ImportWarning
+-- UnicodeWarning
+-- BytesWarning
+-- ResourceWarning
Python内置异常—Exception
- BaseException:所有异常的基类,但不直接被用户定义的类所继承(通常使用Exception)。
- Exception:所有内置的、非系统退出的异常都派生自这个类,用户自定义的异常也应该继承自这个类。
- ArithmeticError:各种算数错误的基类,类似OverflowError、ZeroDivisionError、FloatingPointError。
- BufferError:当无法执行缓存区相关操作时引发的异常。
- LookupError:在映射或者序列使用的键或索引无效时引发的异常的基类,类似IndexError、KeyError。
- EnvironmentError:发生Python系统外的异常的基类,类似IOError,OSError等。
- AssertionError:当一个assert语句失败时引发。
- AttributeError:当属性引用或分配失败时引发(当一个对象完全不支持属性引用或属性分配时,会引发TypeError)。
- EOFError:当一个内置函数(input或raw_input)到达文件末端却没有读取到任何数据(file.read()和file.readline()方法,当遇到EOF情况时返回空字符串)。
- FloatingPointError:当浮点数操作失败时引发的异常。该异常一致活跃,但只有在Python配置了
--with-fpect1
选项时,或者pyconfig.h文件中的WANT_SIGFPE_HANDLER
语法定义时才会引发。 - GeneratorError:当生成器的close方法被调用时引发。该异常直接继承了BaseException。
- IOError:当I/O操作失败时引发(例如print或open函数或文件对象的方法),例如未找到文件或磁盘已满等问题。该类来源于EnvironmentError。
- ImportError:当import语句未能找到定义的模块,或者from…import语句没找到引用的模块名。
- IndexError:当序列索引超出范围时引发(如果索引不是整数,则会引发TypeError)。
- KeyError:当映射的键未找到时引发。
- KeyboardInterrupt:当用户按动终止键时引发,通常为Ctrl+c或者Delete。在执行期间,通常会进行中断操作的检查。该异常继承了BaseException,所以无法通过代码捕捉,直接退出程序。
- MemoryError:当操作致使内存耗尽时引发,但这种场景依然可以挽救(通过删除一些对象)。
- NameError:当局部或全局变量名未找到时引发。只适用于未确定的变量名。
- NotImplementedError:该异常派生自RuntimeError。在用户自定义的基类里,当需要重写抽象方法时,将会引发该异常。
- OSError:源于EvironmentError。当一个函数返回了系统相关的错误时引发(不适用于非法参数类型或其他偶然错误)。
- OverflowError:当算数运算结果太大而无法表示时引发。整数不会发生这种情况
- ReferenceError:弱引用、试图访问一个已经被垃圾回收机制回收了的对象引发的异常。
- RuntimeError:当检测到不属于任何其他类别的错误时引发。关键的值是一个字符串,指示出错的地方。
- StopIteration:当内置函数next()和迭代器的__next__()方法执行时,通过抛出此异常来提示没有其他值。
- SyntaxError:解释器遇到语法问题引发的异常。
- IndentationError:与缩进相关的错误引发的异常。是SyntaxError的子类。
- TabError:当缩进含有不一致的制表符和空格时引发的异常。是IndentationError的子类。
- SystemError;当解释器发现内部错误时引发。
- SystemExit:当执行sys.exit()函数时引发。当不做处理时,Python解释器会退出,不打印任何异常追踪信息。该异常继承的是BaseException,所以单纯捕捉Exception是没有用滴。
- TypeError:当函数或操作传入了不合适类型对象时引发。
- UnboundLocalError:访问未初始化的本地变量时引发,继承NameError。
- UnicodeError:解码或编码过程中发生Unicode相关错误时引发的异常。是ValueError的子类。
- UnicodeEncodeError:编码过程中发生Unicode相关错误时引发的异常。是UnicodeError的子类。
- UnicodeDecodeError:解码过程中发生Unicode相关错误时引发的异常。是UnicodeError的子类。
- UnicodeTranslateError:转换过程中发生Unicode相关错误时引发的异常。是UnicodeError的子类。
- ValueError:当内置运算或函数接收到类型正确但值不正确的参数时引发的异常。
- VSMError:只在VMS上可用。当VMS特定错误时引发。
- WindowsError:在Windows平台发生错误时引发。
- ZeroDivisionError:当除数为零时引发的异常
Python内置警告—Warning
- Warning:warning类的基类。
- UserWarning:用户代码生成的warning的基类。
- DeprecationWaring:有关不推荐使用功能的waring的基类。
- PendingDeprecationWarning:
- SyntaxWarning:有关可疑语法warning的基类。
- RuntimeWarning:用于警告有关可疑运行行为的基类。
- FutureWarning:用于警告将来在语义上改变构造的基类。
- ImportWarning:用于警告模块导入可能出现的错误。
- UnicodeWarning:与Unicode相关的警告的基类。
- BytesWarning:与bytes相关的警告基类。
- ResourceWarning:与资源使用相关的警告的基类。