StandardError:所有的内建标准异常的基类 ArithmeticError:所有数值计算异常的基类 FloatingPointError:浮点计算异常 OverflowError:数值运算超出最大限制 ZeroDivisionError:除零 AssertionError:断言语句失败 AttributeError:对象不包含某个属性 EOFError:没有内建输入,到达EOF标记 EnvironmentError:操作系统异常的基类 IOError:输入/输出操作失败 OSError:操作系统异常 windowsError:系统调用失败 ImportError:导入模块/对象失败 KeyboardInterrupt:用户中断执行 LookupError:无效数据查询的基类 IndexError:序列中没有此索引 KeyError:映射中没有这个键 MemoryError:内存溢出异常 NameError:未声明/初始化对象 UnboundLocalError:访问未初始化的本地变量 ReferenceError:弱引用试图访问已经垃圾回收了的对象 RuntimeError:一般的运行时异常 NotImplementedError:尚未实现的方法 SyntaxError:语法错误导致的异常 IndentationError:缩进错误导致的异常 TabError:Tab和空格混用 SystemError:一般的解释器系统异常 TypeError:对类型无效的操作 ValueError:传入无效的参数 UnicodeError:Unicode相关的异常 UnicodeDecodeError:Unicode解码时的异常 UnicodeEncodeError:Unicode编码错误导致的异常 UnicodeTranslateError:Unicode转换错误导致的异常 Warning:警告的基类 DeprecationWarning:关于被弃用的特征的警告 FutureWarning:关于构造将来语义会有改变的警告 UserWarning:用户代码生成的警告 PendingDeprecationWarning:关于特性将会被废弃的警告 RuntimeWarning:可疑的运行时行为(runtime behavior)的警告 SyntaxWarning:可疑语法的警告 ImportWarning:用于在导入模块过程中触发的警告 UnicodeWarning:与Unicode相关的警告 BytesWarning:与字节或字节码相关的警告 ResourceWarning:与资源使用相关的警告异常体系内部有层次关系,即某些异常属于某个异常的子类,该异常又可能是另一异常的子类 。较低层次、更具细节的异常是某些异常的子类,这些高层次的异常则称为基类,子类和基类是相对的 。Python异常体系中的部分关系如图2所示 。
文章插图
▲图2 Python常见异常体系
在图2中,越下面的异常,其层次越低,细节更明显,它们总有更高层次的基类 。
Python使用try语句处理异常,该语句一般包括try、except和else三个句式,组成try-except-else的形式 。try部分包含一个尝试执行的代码块,except部分是特定异常的处理对策,else部分则在程序运行正常时执行 。
try语句可以视为一种条件分支,与if语句的区别是try语句并不包含条件判断式,执行的流向也不取决于条件表达式,而依赖于代码块能否执行 。但其内在逻辑和运行流程与if语句是相似的,符合条件分支的特征,其基本语法格式如下 。
try: 操作语句1except 错误类型1: 操作语句2except 错误类型2: 操作语句3else: 操作语句4try语句常用的语法格式及其参数说明如下所示 。
try-except-else语句常用的语法格式及其参数说明:
- 错误类型:接收Python异常名,表示符合该异常则执行下面语句 。无默认值
- 操作语句:接收操作语句,表示执行一段代码 。无默认值
运行try-except-else语句时,程序首先执行try代码块,即可能出错的试探性语句,这可能导致致命性错误使得程序无法继续执行;如果try代码块确实无法执行,就可能执行某个except代码块 。
执行一个except代码块的条件是,系统捕捉的异常类型和该代码块标识的类型相符合;如果try代码块的语句正常执行,就接着执行else代码块的语句 。
如果try部分无法执行,也没有找到相应的except代码块,就将异常消息发送给程序调用端,如Python Shell,Python Shell对异常消息的默认处理则是终止程序的执行并打印具体的出错信息 。这也是在Python Shell中执行程序错误后所出现的出错打印信息的由来 。
在try语句中,except与else代码块都是可选的 。except代码块可以有0或多个;else代码块可以有0或1个 。但要注意,else语句的存在必须以except语句的存在为前提,在没有except语句的try语句中使用else语句,会引发语法错误 。
try语句中没有else时,就构成try-except语句,如代码清单⑤所示 。
推荐阅读
-
-
泰国@泰国“狼人女孩”找到真命天子!将面部清理干净后,原来这么美
-
活力百分百|出门穿这“蕾丝”打底衫,看着就年轻15岁,40岁老婆真会打扮
-
物件|这个厂曾生产出被誉为“皇帝女儿”的物件,可还有揭西街坊记得它的辉煌
-
-
她将泅渡一个女诗人的泪湖 中:严防死守,重启中美航班?美国再出损招
-
连云港海事局|连云港海事局:9月28日至30日在黄海南部进行实弹射击
-
福建电视台综合频道:哈啰单车被弃荒地、随意破坏?执法人员:双方都得处罚
-
几乎零差评的10大烧脑电影,全程高能反转不断,你看懂几部?
-
使用 Face-api.js 在 Web 上进行人脸检测
-
蓝天情感|就不要勉强自己了!,看图猜成语:没有过人的智商
-
-
-
SSD|曝黑鲨5系列已备案:或为首款骁龙898+SSD存储旗舰手机!
-
-
电脑使用技巧电脑64G内存真的必要吗?运行速度能有大提升?过来人都这么说
-
电竞|LOL“祖安文化”被点名,严惩乐言和南风只是个开始,以后会更严
-
-
「GameRes游资网」游戏运营活动效果分析(一):活动流程
-
呆萌小跟班|老鹰官推晒球员投篮手势:投手都知道投篮后续动作重要性