一张图整理了 Python 所有内置异常( 二 )


In [25]: dict_ = {'1':'yi','2':'er'} In [26]: dict_.index('1') --------------------------------------------------------------------------- AttributeError                            Traceback (most recent call last) <ipython-input-26-516844ad2563> in <module> ----> 1 dict_.index('1')  AttributeError: 'dict' object has no attribute 'index' 7. NameErrorNameError是指变量名称发生错误,比如用户试图调用一个还未被赋值或初始化的变量时会被触发 。
In [27]: print(list_) --------------------------------------------------------------------------- NameError                                 Traceback (most recent call last) <ipython-input-27-87ebf02ffcab> in <module> ----> 1 print(list_)  NameError: name 'list_' is not defined 8. FileNotFoundErrorFileNotFoundError为打开文件错误,当用户试图以读取方式打开一个不存在的文件时引发 。
In [29]: fb = open('./list','r') --------------------------------------------------------------------------- FileNotFoundError                         Traceback (most recent call last) <ipython-input-29-1b65fe5400ea> in <module> ----> 1 fb = open('./list','r')  FileNotFoundError: [Errno 2] No such file or directory: './list' 9. StopIterationStopIteration为迭代器错误,当访问至迭代器最后一个值时仍然继续访问,就会引发这种异常,提醒用户迭代器中已经没有值可供访问了 。
In [30]: list1 = [1,2] In [31]: list2 = iter(list1) In [33]: next(list2) Out[33]: 1  In [34]: next(list2) Out[34]: 2  In [35]: next(list2) --------------------------------------------------------------------------- StopIteration                             Traceback (most recent call last) <ipython-input-35-5a5a8526e73b> in <module> ----> 1 next(list2) 10. AssertionErrorAssertionError为断言错误,当用户利用断言语句检测异常时,如果断言语句检测的表达式为假,则会引发这种异常 。
In [45]: list3 = [1,2]  In [46]: assert len(list3)>2 --------------------------------------------------------------------------- AssertionError                            Traceback (most recent call last) <ipython-input-46-ffd051e2ba94> in <module> ----> 1 assert len(list3)>2  AssertionError: 上面这些异常应该是平时编程中遇见频率比较高的一部分,完整的还是要看上文的思维导图或者查阅官方文档,当然除此之外Python也支持用户根据自己的需求自定义异常,这里就不再过多概述了 。
对于异常的处理Python也有着比较强大的功能,比如可以捕获异常,主动抛出异常等等,主要有下面几种方式:

  • try ... except 结构语句捕获
  • try ... except ... finally 结构语句捕获
  • try ... except ... else 结构语句捕获
  • raise关键字主动抛出异常
  • try ... raise ... except 触发异常
  • assert断言语句
  • traceback模块跟踪查看异常




推荐阅读