异常处理及程序调试(Python)
一、常见异常
1.NameError —— 尝试访问一个没有声明的变量引发的错误
2.IndexError —— 索引超出序列范围引发的错误
3.IndentationError —— 缩进错误
4.ValueError —— 传入的值错误
5.KeyError —— 请求一个不存在的字典关键字引发的错误
6.IOError —— 输入输出错误(如要读取的文件不存在)
7.ImportError —— 当import语句无法找到模块或from无法在模块中找到相应的名称时引发的错误
8.AttributeError —— 尝试访问未知的对象属性引发的错误
9.TypeError —— 类型不合适引发的错误
10.MemoryError —— 内存不足
11.ZeroDivisionError —— 除数为0引发的错误
二、捕获并处理异常
(一)try...except
1.格式
try:
block1
except Error :
block2
2.参数说明
①block1:表示可能出现错误的代码块
②Error:捕获的异常名称
3.举例
try:
b=int(input())
except ValueError:
print("请重新输入阿拉伯数字!")
# 结果:
# 一
# 请重新输入阿拉伯数字!
(二)try...except...finally(block3是无论如何都要运行的语句)
1.格式
try:
block1
except error :
block2
finally:
block3
2.举例
try:
b=int(input())
except ValueError:
print("请重新输入阿拉伯数字!")
finally:
print("该程序运行结束!")
# 结果:
#一
# 请重新输入阿拉伯数字!
# 该程序运行结束!
(三) 使用raise语句抛出异常
1.格式
raise Error (reason)
2.参数说明
①Error —— 异常名称
②reason —— 自述错误原因
3.举例
def f(a, b):
if b == 0:
raise ValueError("除数不能为零")
return a / b
try:
result = f(10, 0)
except ValueError as e:
print(f"捕获异常: {e}")
# 结果:
# 捕获异常: 除数不能为零
三、assert语句调试程序
1.格式
assert expression reason
2.参数说明
①expression:条件表达式,如为真,则什么都不做,为假,则抛出AssertionError异常
②reason:对判断条件描述
3.举例
def check_positive(number):
assert number > 0, "数字必须为正数"
print(f"数字 {number} 是正数")
check_positive(-5)
# 结果:
# AssertionError: 数字必须为正数