当前位置:首页>python>10分钟掌握 2026版 Python 之异常处理

10分钟掌握 2026版 Python 之异常处理

  • 2026-08-22 05:58:16
10分钟掌握 2026版 Python 之异常处理

概述

程序运行时难免遇到各种意外,掌握异常处理技巧,就能让代码在出错时依然稳定可控。今天我们就来聊聊如何用 try…except、raise 等方法,让程序更健壮。

异常处理

(一)异常捕获(try...except)

1. 捕获指定异常

捕获异常

捕获指定异常

知识点:

  1. 基础异常捕获:使用 try...except 结构可以捕获并处理代码运行时的异常,避免程序直接崩溃,保证后续代码能继续执行。

  2. 捕获指定类型异常:可以通过在 except 后指定具体的异常类型(如 ZeroDivisionError、AttributeError),来精准捕获和处理特定的错误。

  3. 获取异常信息:使用 except 异常类型 as 变量名 的语法,可以将异常对象赋值给变量,从而获取并打印异常的详细信息。

  4. 多异常分支处理:在一个 try 语句后可以跟多个 except 分支,按顺序匹配不同类型的异常,实现针对性的错误处理逻辑。

  5. 常见异常类型示例:访问对象不存在的属性会触发 AttributeError,除以零的操作会触发 ZeroDivisionError。

2. 捕获多个异常

知识点:

  1. 多异常统一捕获:可以在 except 后使用元组 (异常类型1, 异常类型2) 的形式,同时捕获多种指定类型的异常,并用同一段代码处理。

  2. pass 语句的作用:在 try 代码块中使用 pass,表示此处不执行任何操作,仅作为语法占位符,保证代码结构完整。

  3. 异常处理的流程:当 try 块中没有触发异常时,except 块会被跳过,程序会继续执行后续代码;若触发了元组中指定的任一异常,则执行 except 块内的处理逻辑。

  4. 常见异常类型:访问对象不存在的属性会触发 AttributeError,除以零的操作会触发 ZeroDivisionError。

3. 捕获所有异常

4. else 和 finally 块

else块

finally块

知识点:

  1. else 子句的作用:在 try...except 结构中,else 子句仅在 try 代码块没有触发任何异常时才会执行,用于处理无异常时的后续逻辑。

  2. finally 子句的作用:finally 子句无论 try 代码块是否触发异常、是否被 except 捕获,都会被执行,常用于资源释放、清理操作等必须执行的代码。

  3. 异常处理的完整流程:

  4. 常见异常类型:访问对象不存在的属性会触发 AttributeError,除以零的操作会触发 ZeroDivisionError。

(二)主动引发异常(raise)

  1. 主动触发异常:使用 raise 语句可以在代码中主动抛出异常,用于在特定条件不满足时中断程序流程。

  2. 触发指定异常类型:raise 后可以跟具体的异常类(如 Exception),用于明确抛出的异常类型。

  3. 捕获主动抛出的异常:主动抛出的异常可以被 try...except 结构捕获,并在 except 块中进行处理。

  4. 获取异常对象信息:通过 except Exception as e 的语法,可以获取异常对象 e,并使用 type(e) 查看异常的具体类型。

  5. 条件触发异常:可以结合 if 判断,在满足特定条件(如年龄小于 18)时触发异常,实现业务逻辑的校验。

(三)自定义异常

异常的传递性

知识点:

  1. 自定义异常类:通过继承 Python 内置的Exception类,可以创建自定义的异常类型,用于处理特定业务场景下的错误。

  2. 自定义异常的初始化与信息展示:在自定义异常类中,可重写__init__方法接收自定义参数,并重写__str__方法返回友好的错误提示信息。

  3. 主动抛出自定义异常:使用raise语句可以主动抛出自定义异常,通常结合条件判断,在特定业务规则不满足时触发。

  4. 捕获与处理自定义异常:使用try...except结构可以捕获并处理自定义异常,通过as关键字获取异常对象,打印详细的错误信息。

  5. 异常的传递性:当函数内部发生未被捕获的异常时,该异常会向上传递,抛出到调用该函数的代码处,直至被捕获或导致程序终止。

结束语

1

后续我会持续输出优质、实用的内容,也欢迎大家在评论区留言,说说你们最想学习的内容、遇到的困惑,我们一起交流、一起进步。

愿每一位软件人,都能在这里收获知识、突破自我,在自己的赛道上发光发热✨

最新文章

随机文章