系列文章目录
python基础①-基础环境搭建和工具使用
python基础②-常用的各种数据类型初认知
python基础③-数据类型常用的操作和方法字符串、数值、bool
python基础④-数据类型常用的操作和方法列表、元组、字典、集合
python基础⑤-控制流程
python基础⑥-函数
python基础⑦-字符编码与文件操作
python基础⑧-异常
python基础⑨-迭代器和生成器
python基础⑩-面向对象
python基础⑪-继承与派生
python基础⑫-多进程
python基础⑬-多线程
python基础⑭-进程池、线程池、协程
python基础⑮-网络编程socket
python基础⑯-网络编程socket进阶
'''
1.异常
异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常
没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止
异常包含三个部分:
1.异常的追踪信息 File "D:/python代码1/day7/异常.py", line 8, in <module>
2.异常的类型 NameError
3. 异常的信息 name 'a' is not defined
错误分为两大类:
1. 语法上的错误:在程序运行前就应该立即修正 这个好避免
2. 逻辑上的错误:比如:字典没有key,你非要取key,
列表没有索引
变量没有名字 这些不好避免
2.为何要异常处理
避免程序因为异常而崩溃,所以在应用程序中应该对异常进行处理,从而增强程序的健壮性
3. 如何异常处理
try:
代码1
代码2
代码3
......
except NameError:
当抛出的异常是NameError时执行的子代码块
except ....:
pass
else:
pass
finally:
pass
'''
基础用法
def a():
print(111)
a
# 异常处理的单分支
try:
a
except NameError as e:
print('兄弟你检查一下代码')
print(e)
else:
# 程序没有抛出异常的时候执行
print('代码正确')
finally:
# 不管有错没错 一定会执行的部分
print('完成了异常捕获')
常见异常
# 常见异常
# print(1+'a') # TypeError
# print(1+) # SyntaxError
# d = {'x':1,'y':2} # KeyError
# d['z']
# l = [1,2] # IndexError
# l[3]
try:
a
print('=====1>')
print('=====1>')
print('=====1>')
l = [1,2] # IndexError
l[3]
except NameError as e:
print(e)
except IndexError as e:
print(e)
else:
# 程序没有抛出异常的时候执行
print('代码正确')
finally:
# 不管有错没错 一定会执行的部分
print('完成了异常捕获')
合并捕获多种异常
# 合并
try:
# a
print('=====1>')
print('=====1>')
print('=====1>')
l = [1,2] # IndexError
l[3]
except (NameError,IndexError,KeyError) as e:
print(e)
else:
# 程序没有抛出异常的时候执行
print('代码正确')
finally:
# 不管有错没错 一定会执行的部分
print('完成了异常捕获')
万能捕获
# 判断文件是否存在
# 如果不存在创建
# try:
# f = open('text1.txt','r')
# except:
# print('你的文件没有创建')
# f = open('text1.txt','w')
# print('我帮你创建了')
# else:
# print(f.read())
# finally:
# f.close()
断言
# 了解
# 断言
print('=======111')
# 自定义异常
l = [1, 2, 3, 4]
# if len(l) != 5:
# raise TypeError('列表的长度必须为5,这是我的规则')
# 断言如果条件不满足会抛异常
assert len(l) == 5
print('=======222')
finally 必然执行
结合异常处理,确保打开文件后的正常关闭。用open直接打开一个文件,然后write进行写入,假设在写入的时候可能会报错,
# 写段代码确保报错的情况下依然可以把文件关闭掉。
f = open('text2.txt','w')
try:
dic = {'name':'dahai'}
f.write(dic['aaa'])
except Exception as e:
print(e)
finally:
f.close()
print('文件已关闭')