异常处理与断言

异常处理概述

发生异常一方面有时会是疏忽导致,但有时有些异常是不可避免的。此时可以对异常进行捕捉,防止程序终止。下面主要分为异常类型和异常捕获两部分说明。

异常类型

异常类型一般分为Python内置异常和用户自定义异常。

Python内置异常,其中BaseException是所有内置异常的基类,Exception是常规异常的基类。Python自动将所有异常名称放在内建命名空间中,所以程序不必导入exceptions模块就可以使用异常。内置异常类的层次结构如下图:

在这里插入图片描述
在这里插入图片描述

用户自定义异常一般用于异常触发时输出更多信息,如下创建一个MyError的异常实例:

在这里插入图片描述

异常捕获

当发生异常时,我们需要对异常进行捕获,然后进行相应的处理。其中与异常相关的关键字主要包括:try/except、else、finally、raise、traceback。该语法异常处理规则是:

l 执行try语句。若该语句未发生异常,则执行else语句;若该语句发生异常,则执行跳转到第一个except语句。

l 如果第一个except语句与发生的异常匹配,则执行该except下的语句;如果第一个except语句与发生的异常不匹配,则跳转到下一个except语句。

l 直到有一个except语句与其匹配或者所有except语句均不与其异常匹配,此时跳转到finally语句。

l 无论try语句发生异常与否,只要存在finally语句,均会执行该finally语句。

下面依次进行介绍:

try/except结构

捕获指定异常

在这里插入图片描述

捕获多个异常

第一种方式是一个except同时处理多个异常:

在这里插入图片描述

第二种方式是多个except处理,区分优先级:

在这里插入图片描述

异常中的else

如果判断语句中未发生异常,此时会执行else语句内容。

在这里插入图片描述

异常中的finally

无论语句中是否发生异常都会执行finally部分代码。也就是说即使在前面语句发生异常,也会执行finally语句,执行完之后才会抛出异常。

在这里插入图片描述
在这里插入图片描述

raise主动触发异常

可以使用raise语句自己触发异常,语法格式为:

在这里插入图片描述

其中Exception是异常的类型;args是一个异常参数值,该值可选,如果不提供则默认为None;traceback是最终异常对象。

例子如下:

在这里插入图片描述

采用traceback模块查看异常(未成功)

Traceback对象可以跟踪到异常发生时的有关信息,用法为:

在这里插入图片描述

也可以将相关信息写入到文件中去:

在这里插入图片描述

断言概述

在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件时就崩溃,这时候就需要assert断言的帮助。

python assert断言的作用

python assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假。可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触发异常。

assert断言语句的语法格式

assert语句用来声明某个条件是真的。
如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句。
当assert语句失败的时候,会引发一AssertionError。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值