一、什么是异常?
异常就是程序运行时出错,比如:
除以 0
访问不存在的变量 / 列表索引
打开不存在的文件
类型错误(字符串 + 数字)
正确处理:捕获异常 → 处理错误 → 程序继续运行。
二、常用的异常处理语法
2.1、基础:try - except(捕获并处理)
try:
# 可能出错的代码
num = int(input("请输入数字:"))
result = 10 / num
print(result)
except:
# 出错时执行这里
print("输入错误!请输入有效数字")作用:无论 try 里报什么错,都会跳到 except,程序不会崩
2.2、精准捕获:指定异常类型
try:
num = int(input("输入数字:"))
print(10 / num)
except ValueError:
print("你输入的不是数字!")
except ZeroDivisionError:
print("不能除以 0!")2.3、完整结构:try - except - else - finally
try:
# 可能出错
f = open("test.txt", "r")
except FileNotFoundError:
print("文件不存在")
else:
# 没出错才执行
print("文件读取成功")
f.close()
finally:
# 无论是否出错,一定会执行
print("操作结束")else:代码正常时执行
finally:常用于关闭文件、释放资源
2.4、主动抛出异常:raise
age = int(input("输入年龄:"))
if age < 0:
raise ValueError("年龄不能是负数!")三、Python 常见异常类型
| 异常名 | 含义 |
|---|---|
SyntaxError | 语法错误(代码写错了) |
NameError | 使用了未定义变量 |
TypeError | 类型错误(如字符串 + 数字) |
IndexError | 列表索引越界 |
KeyError | 字典键不存在 |
ValueError | 值类型不对 |
ZeroDivisionError | 除零错误 |
FileNotFoundError | 文件不存在 |
四、实践
不要用空 except(会隐藏 bug)
尽量捕获具体异常,不要一概而论
用
finally关闭文件、数据库连接出错时打印清晰提示,方便调试
复杂程序用断点调试,不要只靠猜