一、try-except 基础结构
语法格式
try:
# 放有可能报错的代码
可能出错的代码
except 异常类型:
# 报错后执行的处理代码
异常处理逻辑
执行逻辑
- 3. 如果发生对应异常:立刻跳到
except 执行,程序不崩溃
示例1:捕获指定异常
try:
num = int("abc")
except ValueError:
print("无法转为整数,值格式错误")
示例2:捕获多种异常
try:
lst = [1,2]
print(lst[10])
except IndexError:
print("索引越界")
except KeyError:
print("字典键不存在")
示例3:万能捕获所有异常
try:
10 + "python"
except Exception:
print("程序出现异常")
示例4:获取异常详细信息
try:
print(a)
except NameError as e:
print("错误原因:", e)
二、完整结构:try-except-else-finally
完整固定语法
try:
# 可能出错的代码
代码块
except 异常类型:
# 有异常才执行
异常处理
else:
# 无异常才执行
正常逻辑代码
finally:
# 无论有无异常,必定执行
收尾、释放资源
四段执行规则(必记)
- 2. 有异常 → 走
except,不走 else - 3. 无异常 → 走
else,不走 except - 4. finally:不管有没有异常,最后一定执行
三、分场景演示
场景1:代码正常,无异常
try:
n = int("123")
except ValueError:
print("转换失败")
else:
print("转换成功,数字是:", n)
finally:
print("程序执行完毕")
输出:
转换成功,数字是: 123
程序执行完毕
场景2:代码报错,触发异常
try:
n = int("hello")
except ValueError:
print("转换失败")
else:
print("转换成功")
finally:
print("程序执行完毕")
输出:
转换失败
程序执行完毕
四、finally 经典用途
用于必须收尾的操作:
示例:文件安全关闭
f = None
try:
f = open("test.txt", "r", encoding="utf-8")
content = f.read()
except FileNotFoundError:
print("文件不存在")
finally:
if f:
f.close()
print("文件已关闭")
五、核心总结口诀
六、结构顺序不能乱
只能是:
try → except → else → finally
不能调换顺序。