Python异常机制

内置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:与资源使用相关的警告的基类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值