目录
Python之第十二章 异常处理
1.异常的概述
1.异常:
程序运行时检测出的错误,解释器无法继续执行,继而出现程序中断,这些错误统称为异常
2.异常演示
print(10/0)
结果:
ZeroDivisionError: division by zero
f = open('python.txt', 'r')
content = f.readline()
print()
结果:
FileNotFoundError: [Errno 2] No such file or directory: 'python.txt' # 差找不到文件错误
3.异常出现的原因
错误发生,原有的程序无法继续执行,对于用户来说,不能因该问题就终止程序执行,所以要给出异常处理的机制,让设计者知道为什么出现错误,应该怎么处理
4.异常分类
显示异常 --- 明确语法错误,有提示
隐式异常 --- 不容易发现,一般与操作有关
5.异常信息
异常的追踪信息 --- 异常出现在哪一行
异常的类型 --- 内置在Python中,根据异常类型给出提示
异常内容 --- 异常的简单解释
6.常见异常
异常名称 | 描述 |
---|---|
NameError | 变量没有声明 |
IndexError | 索引超出序列范围 |
IndentationError | 缩进错误 |
ValueError | 传入的值有误 |
KeyError | 请求的字典关键字不存在 |
IoError | 输入输出错误 |
ImportError | 模块加载错误 |
AttibuteError | 访问位置的对象属性 |
TypeError | 类型不匹配错误 |
MemoryError | 内存不足 |
ZeroDivisionError | 除数为0 |
2.捕获异常
1.格式
try:
可能发生的错误代码
except
异常出现后的执行代码
可能发生的错误代码 --- 一般为正常的程序段
异常出现后的执行代码 --- 可以写固定的提示信息
2.执行方式
当try语句块的代码出现错误,就会执行except后的代码块,若没有出现错误则except之后的代码不会执行
3.例
try:
f = open('python.txt', 'r')
content = f.readline()
print()
except:
f = open('python.txt', 'r')
f.write('发生异常,则执行except后的代码')
f.close()
4.捕获指定的异常
原因 --- 有针对性的捕获异常,并执行相应代码
格式
try:
可能遇到的异常代码
except(需要捕获异常的名称 [as 新名称]):
异常出现后的执行代码
需要捕获异常的名称 [as 新名称] --- 表示指明需要捕获的异常名,由于名称太长可以利用as命名一个别名,可以省略
3.异常捕获的else语句
1.作用
else语句表示如果没有异常则需要执行的代码
2.格式
try:
可能遇到的异常代码
except:
异常出现后的执行代码
else:
没有发现异常时执行的语句
3.例
try:
f = open(1)
except:
f = open(e)
else:
print('呵呵,没有异常,没问题')
4.异常的捕获finally语句
1.定义:
finally语句表示无论是否有异常都要执行的语句,如:关闭文件、关闭数据库
2.格式
try:
可能遇到的异常代码
except:
异常出现后的执行代码
else:
没有发现异常时执行的语句
finally:
必须执行的代码块
3.例
try:
f = open('python.txt', 't')
except:
f = open('python.txt', 'w')
else:
print('真棒,无异常')
finally:
print('关闭文件')
f.close()
5.自定义异常
1.作用
若果某个函数或方法可能出现异常,但又不愿在当前去处理,则可以使用raise语句来处理
2.格式:raise 异常对象
3.例 :密码长度不足的自定义异常
def input_password():
password = input('请输入密码,不少于6位:')
if len(password) < 6:
# 抛出异常
raise Exception('您的密码不足六位')
pass
print(password)
input_password()