在Python中,捕获特定类型异常是提升代码健壮性的核心技巧,通过try-except
结构精准拦截ValueError
、TypeError
等错误,避免程序崩溃并实现针对性处理。关键点包括:精确匹配异常类型、多异常分层捕获、结合else
/finally
优化流程。
-
基础语法
使用try-except
包裹可能出错的代码,指定异常类型如except ValueError
。例如处理用户输入时,拦截非数字字符:python复制
try: num = int(input("输入数字:")) except ValueError: print("请输入有效数字!")
-
多异常处理
通过多个except
块或元组捕获多种异常,按从具体到通用排序。例如同时处理除零和类型错误:python复制
try: result = 10 / int("a") except ZeroDivisionError: print("除数不能为零") except (ValueError, TypeError): print("输入类型错误")
-
异常对象与信息
使用as
获取异常实例,提取错误详情。例如记录文件读取失败的异常信息:python复制
try: with open("data.txt") as f: content = f.read() except FileNotFoundError as e: print(f"文件未找到: {e}")
-
流程优化技巧
-
else
块:无异常时执行,如成功读取文件后解析数据。 -
finally
块:必执行清理操作,如关闭数据库连接。
-
-
自定义异常
继承Exception
类创建业务相关异常,例如验证年龄负数时抛出InvalidAgeError
。
提示:避免裸except
捕获所有异常,优先处理已知错误类型。调试阶段可暂时打印异常堆栈(import traceback
),生产环境替换为日志记录。