2020-10-25

本文介绍了Python中的异常概念,包括BaseException和Exception类,以及如何通过try-except语句捕获和处理异常。此外,讲解了使用as获取异常信息、try-except-else和try-finally语句的用法。还提到了raise语句和assert语句用于手动触发异常,以及自定义异常的实现方式。最后,异常回溯提供了关于异常的详细信息,包括类型、值和调用栈。
摘要由CSDN通过智能技术生成

第13章 异常
13.1 异常概念
13.1.1 异常的概念在程序中,当Python检测到一个错误时,解释器就会指出当前流程已无法继续执行下去,这时就出现了异常。例如,使用print()函数输出一个未定义的变量值 .print (name)
13.1.2 异常类Python为了区分不同的异常,其中内置了许多异常类,常见的异常类如下:BaseException 所有异常类的直接或间接基类Exception 所有非退出异常的基类SystemExit 程序请求退出时抛出的异常KeyboardInterrupt 用户中断执行BaseException是异常的顶级类,但用户定义的类不能直接继承这个类,而是要继承Exception。Exception类是与应用相关异常的顶层基类,除了系统退出事件类(SystemExit、KeyboardInterrupt和GeneratorExit)之外,几乎所有用户定义的类都应该继承自这个类,而不是BaseException类。
13.2 捕获与处理异常
13.2.1 try-except语句try-except语句可以捕获异常并进行处理try: #可能出现异常的语句except 异常类名: #处理异常的语句当try语句块中某条语句出现异常时,程序就不再执行try语句块中后面的语句,而是直接执行except语句块
13.2.2 使用as获取异常信息为了区分不同的异常,可以使用as关键字来获取异常信息13.2.3 try-except-else语句try-except-else语句用于处理未捕获到异常的情形如果try语句内出现了异常,则执行except语句块,否则执行else语句块。
13.2.4 try-finally语句在try-finally语句中,无论try语句块中是否发生异常,finally语句块中的代码都会执行。其中,finally语句块用于清理在try块中执行的操作,如释放其占有的资源(如文件对象、数据库连接、图形句柄等)。
另外,with-as语句可作为try-finally语句处理异常的替代
13.3 触发异常触发异常有两种情况:一种是程序执行中因为错误自动触发异常另一种是显式地使用raise或assert语句手动触发异常。Python捕获与处理这两种异常的方式是相同的。
13.3.1 raise语句(raise语句可以手动触发异常)

  1. 通过类名触发异常
  2. 通过异常类的实例对象触发异常
  3. 重新触发异常
    13.3.2 assert语句assert语句(又称断言)是有条件的触发异常
    13.4 自定义异常Python中内置的异常类毕竟有限,用户有时须根据需求需设置其他异常,如学生成绩不能为负数、限定密码长度等。自定义异常类一般继承于Exception或其子类,其命名一般以Error或Exception为后缀
    13.5 回溯最后的异常type:异常的类型。value/message:异常的信息或者参数。traceback:包含调用栈信息的对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值