一、异常概念
-
异常(BUG) :程序运行时出现的错误,会导致程序直接中断停止。
-
例子:除0、用错数据类型、文件不存在、访问不存在的变量等。
二、异常捕获的意义
代码不可能100%无错,给(try)可能出错的代码 做(except)备用方案,让程序出错后不崩溃,继续运行。
三、完整语法
python
try:
# 【核心】可能抛出异常的代码
可能报错的代码
except 异常类型1 as 变量:
# 捕获到指定异常,执行处理
异常1的处理方案
except 异常类型2 as 变量:
# 捕获另一种异常
异常2的处理方案
except Exception as e:
# 【万能捕获】捕获所有异常(最后写)
所有未捕获异常的处理
else:
# 【可选】没有发生任何异常,才执行
程序正常运行的代码
finally:
# 【可选】无论是否异常,一定会执行
# 常用于:关闭文件、关闭连接、清理资源
必须执行的代码
语法要点
-
try:只有里面的代码会被监控异常 -
except:匹配异常类型,进行特定处理 -
Exception:所有异常的父类,能捕获全部异常 -
else:无异常才执行 -
finally:有无异常都执行(必执行)
四、基础代码示例
示例1:捕获除0错误 + 万能捕获
python
try:
a = 10
b = 0
result = a / b # 会报 ZeroDivisionError 异常
print(result)
# 捕获指定异常
except ZeroDivisionError as e:
print("捕获到异常:不能除以0!")
print("异常信息:", e)
# 捕获其他所有异常
except Exception as e:
print("发生未知错误:", e)
else:
print("程序运行完全正常")
finally:
print("=== 无论是否报错,我都会执行 ===")
示例2:捕获类型错误
python
try:
num = "123"
sum = num + 10 # 字符串+数字,报 TypeError
except TypeError as e:
print("错误:数据类型不匹配")
五、异常的传递性

-
异常会从内到外、从下到上传递(函数嵌套中)
-
从出错的函数 → 调用它的函数 → 主函数
-
直到被
except捕获,若全程没捕获,程序崩溃报错
代码演示传递
python
# 函数3:出错的地方
def func03():
print(10 / 0) # 异常诞生
# 函数2:调用函数3
def func02():
func03()
# 函数1:调用函数2
def func01():
func02()
# 主函数:最终捕获
try:
func01()
except Exception as e:
print("主函数捕获到了传递上来的异常:", e)
结论:异常从func03→func02→func01→main,最终被捕获。
六、报错查看技巧
-
报错信息最后一行:具体异常类型 + 原因
-
往上看:报错代码位置、函数调用链条
-
直接定位最后一行,最快找到bug根源
总结
-
异常=运行时bug,会中断程序
-
try监控代码,except捕获处理,Exception捕获全部 -
else无异常执行,finally必执行 -
异常会向上传递,直到被捕获