异常表示程序运行中的非正常情况。在Python中,通过异常对象描述异常状态。当程序在执行过程中出错时,会改变正常的执行流程,抛出异常对象并进入异常处理机制。若异常未被捕获或处理,程序将输出回溯信息(Traceback)并终止运行。
1、 通用异常类型列表

2、 Exception类是所有异常的基类,各类具体异常均继承自它。Python解析器会自动将通用异常类型名称置于内置命名空间中,因此在使用这些通用异常类型时,无需导入exceptions模块。
3、 raise ] 人生如逆水行舟,不进则退,唯有不断努力,方能抵达理想彼岸。

4、 traceback:此参数用于追踪异常对象,通常较少用到。通过它可触发异常并接收异常信息。
5、 3.2 传递异常:捕获异常后若需再次触发,直接使用不带参数的 raise 关键字即可实现。

6、 捕获异常后,可能会再次触发相同的异常。
7、 3.3 assert语句触发异常:assert依据后续表达式的布尔值决定程序流向。表达式为True时,继续执行;为False时,程序中断,调用默认异常处理机制,并显示设定的提示信息。

8、 例如:

9、 操作成功完成

10、 3.4 捕获异常 try...except...else 说明:except 子句数量不限,但若多个 except 子句捕获异常且异常类存在继承关系时,应将子类写在前面。否则父类会优先捕获子类异常,导致后续的子类 except 子句无法执行。
11、 格式:

12、 若 try 语句执行期间出现异常,程序会回退到标记处,然后向下查找并与第一个匹配的 except 子句执行。异常处理完成后,程序将跳过整个 try 语句继续运行,除非处理过程中引发了新异常。
13、 若未找到与异常匹配的 except 子句,可以通过不指定异常类型或使用通用类型 Exception 捕获所有异常。此时,异常会传递给上一层的 try(在存在嵌套 try 的情况下),甚至逐级向上递交至程序顶层,直到找到匹配的 except 子句为止。如果始终未能匹配到合适的处理语句,程序将终止运行,并输出默认的错误信息。
14、 若try子句执行期间未发生异常,Python会执行else语句(可选)中的代码,随后流程继续离开try语句。

15、 操作成功完成

16、 嵌套尝试:

17、 操作成功完成

18、 方法一:指定一个通用异常,能够捕获 Exception 类中包含的多种不同异常。

19、 方法二:在except子句后以元组形式列出多个异常。

20、 方法三:except后不指定异常名称,直接捕获所有可能发生的异常情况。

21、 无论 try 语句块中是否发生异常,finally 子句中的代码都会执行,通常用于处理文件关闭、锁释放或归还数据库连接到连接池等操作,确保系统资源得到正确释放,即使出现错误也能正常清理。

22、 需要注意,try..finally 和 try..except 可以同时使用,相互配合。

23、 try…finally 的作用是,即使 try 代码块中遇到 return,也会继续执行 finally 中的代码。因此,它通常用于处理资源释放操作,确保代码退出前完成必要清理,保障程序稳定性。
24、 通过继承Exception类(直接或间接)创建自定义异常类,此类异常只能用raise关键字手动触发。

25、 操作成功完成

26、 使用with...as时,若触发异常会自动关闭资源。
27、 使用类文件的流对象时,通常需手动调用 close() 关闭资源。而 with...as 语句可在代码块执行完毕后自动关闭文件。即使代码块中发生异常,with 语句也会借助默认异常处理机制进行处理,并确保文件正常关闭,无需额外操作。

28、 操作成功完成

29、 每个异常都有描述信息,可用as关键字获取。不过,这类信息通常不适合普通用户查看,因此会采用自定义异常提示。同时,原始异常信息会被保留,以便后续分析使用。

30、 操作成功完成

31、 异常参数可作为输出参数获取异常信息,包含错误数字、位置及详细内容等属性。

32、 操作成功完成

33、 在追踪异常时,需导入traceback模块,它能帮助我们查看异常的详细信息。如果希望获取异常详情的同时不终止程序运行,可以在except子句中进行处理。这样既能掌握问题所在,又确保程序继续执行,有效提升调试效率。

34、 输出异常信息,如sys.exc_type、sys.exc_value、sys.exc_traceback、limit和file等,实际上是通过以线程安全的方式调用sys.exc_info()函数,来获取这些相同的错误详情。这种方式确保了在多线程环境中信息的准确提取。

35、 操作成功完成

36、 将异常信息重定向到指定文件,以便后续分析。具体方法如下:

37、 操作成功完成

38、 通过sys.exc_info()可以获取异常信息,而traceback.print_exc()函数实际上是调用了sys.exc_info()来实现的。

39、 操作成功完成

40、 除了处理程序错误,异常机制还可用于关闭资源、确保平台兼容及模块导入等场景。