在 Python 中,try 语句是异常处理(Error Handling)的核心机制,用于捕获和处理程序运行过程中出现的错误(如语法错误之外的运行时错误:除零错误、索引越界、网络请求失败等),避免程序因错误直接崩溃,让程序具备更强的鲁棒性。(在编程领域,鲁棒性(Robustness)指的是程序在面对异常、错误、非法输入或恶劣环境时,能够保持稳定运行而不崩溃,并且能合理处理这些异常情况的能力。简单来说,就是程序的'抗造''耐折腾'程度。)
一、异常的基本概念
异常是程序运行时发生的不正常情况(错误),比如:
ZeroDivisionError:除数为 0;IndexError:列表索引超出范围;KeyError:字典键不存在;requests.exceptions.RequestException:网络请求失败(如超时、连接拒绝);FileNotFoundError:文件不存在。
如果不处理这些异常,程序会直接终止并抛出错误信息;而 try 语句可以捕获这些异常,并执行自定义的处理逻辑。
二、try 语句的完整语法结构
Python 的 try 语句有多种组合形式,从简单到复杂依次为:try-except、try-except-else、try-except-finally、try-except-else-finally。
1. 基础结构:try-except(核心)
这是最常用的形式,用于捕获并处理指定的异常。
try: # 可能引发异常的代码块(受保护的代码)
risky_code()
except [异常类型 1] [as 异常对象]: # 当异常类型 1 发生时,执行的处理逻辑
handle_exception1()
except [异常类型 2] [as 异常对象]: # 当异常类型 2 发生时,执行的处理逻辑
handle_exception2()
except: # 捕获所有未被上面捕获的异常(兜底处理,不推荐滥用)
handle_all_other_exceptions()
关键说明:
try块:存放可能出现异常的代码(如网络请求、文件操作、数据类型转换等)。except块:当try块中发生指定类型的异常时,执行该块的代码;可以有多个except块,分别处理不同类型的异常。as 异常对象:可选,用于获取异常的详细信息(如错误描述、堆栈信息),常用变量名:e、err。
示例 1:捕获特定异常
try:
a = 10 / 0 # 会引发 ZeroDivisionError
b = [, , ][]
ZeroDivisionError e:
()
IndexError e:
()


