Python基础入门:异常处理--阿里云天池

异常处理

异常就是运行期检测到的错误。计算机语言针对可能出现的错误定义了异常类型,某种错误引发对应的异常时,异常处理程序将被启动,从而恢复程序的正常运行。

1. Python 标准异常总结(44种Python中常见的标准异常)

1.BaseExcpettion:所有异常的根异常

2.GeneratorExit: 由生成器.close()方法引发

3.KeyboardInterrupt:由键盘中断(通常为Ctrl+C) 生成

4.SystemExit: 程序退出/终止

5.Exception: 所有非退出异常的基类

6.StopIteration: 引发后可停止迭代

7.StandardError :所有内置异常的基类(仅在Python2中使用)

8.ArithmeticError :算数异常的基类

9.FloatingPointError:浮点操作失败

10.ZeorDivisionError :对0进行除或取模操作

11.AssertionError: 由assert语句引发

12.AttributeError :当属性名称无效时引发

13.EnviromentError: 发生在Python外部的错误

14.IOErrorI/O:或文件相关的错误

15.OSError :操作系统错误

16.EOFError :到达文件结尾时引发

17.ImportError :import语句失败

18.LookupError :索引和键错误

19.Index Error :超出序列索引的范围

20.KeyError :字键盘不存在

21.MemoryError: 内存不足

22.NameError :无法找到局部或全局名称

23.UnboundLocalError:未绑定的局部变量

24.ReferenceError:销毁被引用对象后使用的弱引用

25.RuntimeError :一般运行时错误

26.NotImplementedError:没有实现的特性

27.SystaxError :解析错误

28.IndentationError: 缩进错误

29.TabError :使用不一致的制表符(由-tt选项生成)

30.SystemError: 解释器中的非致命系统错误

31.TypeError: 给操作传递了错误的类型

32.ValueError :无效类型

33.UnicodeError: Unicode错误

34.UnicodeDecondeError: Unicode解码错误

35.UnicodeEncodeError :Unicode编码错误

36.UnicodeTranslateError:Unicode转换错误

37.Warning:警告的基类

38.DeprecationWarning:关于被弃用的特征的警告

39.FutureWarning:关于构造将来语义会有改变的警告

40.OverflowWarning:旧的关于自动提升为长整型(long)的警告

41.PendingDeprecationWarning:关于特性将会被废弃的警告

42.RuntimeWarning:可疑的运行时行为(runtime behavior)的警告

43.SyntaxWarning:可疑的语法的警告

44.UserWarning:用户代码生成的警告

  • 异常体系内部有层次关系,Python异常体系中的部分关系如下所示:

Python基础入门:异常处理--阿里云天池

2. Python标准警告总结

  • Warning:警告的基类
  • DeprecationWarning:关于被弃用的特征的警告
  • FutureWarning:关于构造将来语义会有改变的警告
  • UserWarning:用户代码生成的警告
  • PendingDeprecationWarning:关于特性将会被废弃的警告
  • RuntimeWarning:可疑的运行时行为(runtime behavior)的警告
  • SyntaxWarning:可疑语法的警告
  • ImportWarning:用于在导入模块过程中触发的警告
  • UnicodeWarning:与Unicode相关的警告
  • BytesWarning:与字节或字节码相关的警告
  • ResourceWarning:与资源使用相关的警告

3. 异常处理

捕捉异常可以使用try/except语句。

try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。

如果你不想在异常发生时结束你的程序,只需在try里捕获它。

try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。

如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。