python 5

本文详细介绍了Python中异常处理的基本概念,包括如何使用raise语句引发异常,用户自定义异常的创建,以及通过sys和traceback模块获取详细的异常信息。此外,还探讨了assert语句的使用及其在条件检查中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.简单地使用 raise 语句来引发异常,那么该 raise 语句将会再次引发该 except 块所捕获的异常。
二.用户自定义异常都应该继承 Exception 基类或 Exception 的子类

class AuctionException(Exception):
    pass

三.捕获异常时,有 2 种方式可获得更多的异常信息,分别是:
1)使用 sys 模块中的 exc_info 方法;
exc_info() 方法会将当前的异常信息以元组的形式返回,该元组中包含 3 个元素,分别为
type、value 和 traceback,它们的含义分别是:

type:异常类型的名称,它是 BaseException 的子类

value:捕获到的异常实例。

traceback:是一个 traceback 对象。

#使用 sys 模块之前,需使用 import 引入
import sys
try:
    x = int(input("请输入一个被除数:"))
    print("30除以",x,"等于",30/x)
except:
    print(sys.exc_info())
    print("其他异常...")

当输入 0 时,程序运行结果为:
请输入一个被除数:0

(<class 'ZeroDivisionError'>, ZeroDivisionError('division by zero',), <traceback object at 0x000001FCF638DD48>)
其他异常...

2)使用 traceback 模块中的相关函数。
要查看 traceback 对象包含的内容,需要先引进 traceback 模块,然后调用 traceback 模块中的 print_tb 方法,并将 sys.exc_info() 输出的 traceback 对象作为参数参入。

#使用 sys 模块之前,需使用 import 引入
import sys
#引入traceback模块
import traceback
try:
    x = int(input("请输入一个被除数:"))
    print("30除以",x,"等于",30/x)
except:
    #print(sys.exc_info())
    traceback.print_tb(sys.exc_info()[2])
    print("其他异常...")

输入 0,程序运行结果为:

请输入一个被除数:0
  File "C:\Users\mengma\Desktop\demo.py", line 7, in <module>
    print("30除以",x,"等于",30/x)
其他异常...

可以看到,输出信息中包含了更多的异常信息,包括文件名、抛出异常的代码所在的行数、抛出异常的具体代码。
print_tb 方法也仅是 traceback 模块众多方法中的一个。

四、使用 traceback 模块查看异常传播轨迹,首先需要将 traceback 模块引入,该模块提供了如下两个常用方法:
traceback.print_exc():将异常传播轨迹信息输出到控制台或指定文件中。
format_exc():将异常传播轨迹信息转换成字符串。

五、assert
语句的作用是:当条件表达式的值为真时,该语句什么也不做,程序正常运行;反之,若条件表达式的值为假,则 assert 会抛出 AssertionError 异常。其中,[,描述信息] 作为可选参数,用于对条件表达式可能产生的异常进行描述。

六、finally
除非在try,except调用了退出python解释器os._exit(1),否则不管任何情况,都会执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值