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异常体系中的部分关系如下所示:
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语句(除非在处理异常时又引发新的异常)。