10分钟掌握 2026版 Python 之异常处理
程序运行时难免遇到各种意外,掌握异常处理技巧,就能让代码在出错时依然稳定可控。今天我们就来聊聊如何用 try…except、raise 等方法,让程序更健壮。
基础异常捕获:使用 try...except 结构可以捕获并处理代码运行时的异常,避免程序直接崩溃,保证后续代码能继续执行。
捕获指定类型异常:可以通过在 except 后指定具体的异常类型(如 ZeroDivisionError、AttributeError),来精准捕获和处理特定的错误。
获取异常信息:使用 except 异常类型 as 变量名 的语法,可以将异常对象赋值给变量,从而获取并打印异常的详细信息。
多异常分支处理:在一个 try 语句后可以跟多个 except 分支,按顺序匹配不同类型的异常,实现针对性的错误处理逻辑。
常见异常类型示例:访问对象不存在的属性会触发 AttributeError,除以零的操作会触发 ZeroDivisionError。
多异常统一捕获:可以在 except 后使用元组 (异常类型1, 异常类型2) 的形式,同时捕获多种指定类型的异常,并用同一段代码处理。
pass 语句的作用:在 try 代码块中使用 pass,表示此处不执行任何操作,仅作为语法占位符,保证代码结构完整。
异常处理的流程:当 try 块中没有触发异常时,except 块会被跳过,程序会继续执行后续代码;若触发了元组中指定的任一异常,则执行 except 块内的处理逻辑。
常见异常类型:访问对象不存在的属性会触发 AttributeError,除以零的操作会触发 ZeroDivisionError。
else 子句的作用:在 try...except 结构中,else 子句仅在 try 代码块没有触发任何异常时才会执行,用于处理无异常时的后续逻辑。
finally 子句的作用:finally 子句无论 try 代码块是否触发异常、是否被 except 捕获,都会被执行,常用于资源释放、清理操作等必须执行的代码。
异常处理的完整流程:
常见异常类型:访问对象不存在的属性会触发 AttributeError,除以零的操作会触发 ZeroDivisionError。
主动触发异常:使用 raise 语句可以在代码中主动抛出异常,用于在特定条件不满足时中断程序流程。
触发指定异常类型:raise 后可以跟具体的异常类(如 Exception),用于明确抛出的异常类型。
捕获主动抛出的异常:主动抛出的异常可以被 try...except 结构捕获,并在 except 块中进行处理。
获取异常对象信息:通过 except Exception as e 的语法,可以获取异常对象 e,并使用 type(e) 查看异常的具体类型。
条件触发异常:可以结合 if 判断,在满足特定条件(如年龄小于 18)时触发异常,实现业务逻辑的校验。
自定义异常类:通过继承 Python 内置的Exception类,可以创建自定义的异常类型,用于处理特定业务场景下的错误。
自定义异常的初始化与信息展示:在自定义异常类中,可重写__init__方法接收自定义参数,并重写__str__方法返回友好的错误提示信息。
主动抛出自定义异常:使用raise语句可以主动抛出自定义异常,通常结合条件判断,在特定业务规则不满足时触发。
捕获与处理自定义异常:使用try...except结构可以捕获并处理自定义异常,通过as关键字获取异常对象,打印详细的错误信息。
异常的传递性:当函数内部发生未被捕获的异常时,该异常会向上传递,抛出到调用该函数的代码处,直至被捕获或导致程序终止。
后续我会持续输出优质、实用的内容,也欢迎大家在评论区留言,说说你们最想学习的内容、遇到的困惑,我们一起交流、一起进步。
愿每一位软件人,都能在这里收获知识、突破自我,在自己的赛道上发光发热✨