异常处理
简介
在我们写程序代码的时候,往往会因一个小问题让我们整个程序直接挂掉。
异常处理对我们测试有什么好处,相信做过自动化的同学都知道我们的用例都是一条一条的去执行比如我们程序用例几百条,有一条用例因数据原因导致了程序异常,那么剩下的就会全体停止工作,遇到这样的情况我们应该将这个数据导致的问题抛出来,处理这个异常就可以了。
我们可以使用 tryexcept 的方式来处理异常。
结构
将有可能发生报错的语句放到try:里面,然后使用except来处理异常,每一个try 必须至少有1个except。
如果可能发生报错的语句我们能知道要报哪些异常,except 后需要跟上异常名称
也可以使用万能异常Exception,他可以捕获任意异常
python所有的标准异常类:请看文章末尾处
实例1:处理指定错误异常类型
如果我们知道会报那些错误,那么就可以直接来捕捉处理就好了,但是如果捕捉异常名称不正确,则也会程序报错。
首先我们打印一个未声明/初始化对象 (没有属性)的错误,然后再后面再打印一个正常能被执行的数据
print(aa) print('bb')
打印结果
Traceback (most recent call last):
File "C:\Users\张天赐\PycharmProjects\pythonProject\test\lianxi\111.py", line 6, in <module>
print(a)
NameError: name 'a' is not defined
显然print("bb")没有被执行,我们此时对我们可能或者已知报错的部分增加try:并且用except 指定NameError as 到f变量,并且打印出这个错误
try: print(aa) except NameError as f: print(f) print('bb')
打印结果
name 'aa' is not defined
bb
可以看出,程序将报错信息打印了出来,然后执行了print("bb")
假如我是打开一个错误的文件呢?我又不知道打开文件错误的名称,这时候我又怎么处理呢?
try: open('ztc.txt','r') except NameError as f: print(f) print('bb')
打印结果:
实际是输出错误文件,我用Nameerror是不能正确找到该异常名称的
Traceback (most recent call last): File "C:\Users\张天赐\PycharmProjects\pythonProject\test\lianxi\111.py", line 2, in <module> open('ztc.txt','r') FileNotFoundError: [Errno 2] No such file or directory: 'ztc.txt'
遇到这样的情况请看实例2
实例2 :万能的异常处理
实例1中我们说了,在我们能确定会报什么类型的错误的时候,我们可以指定这个错误类型来处理他,当然在很多时候,我们会遇到很多的未知异常,不可能将所有异常都预知到,那么我们可以直接用万能异常Exception
try: open('ztc.txt','r') except Exception as f: print(f) print('bb')
打印结果:
无论我们try中是任何错误类型的异常,exception都可以来处理他
[Errno 2] No such file or directory: 'ztc.txt'
bb
实例3:try...finally...
try...finally...的意思是,我们程序是否遇到错误,这些代码必须执行
都有哪些场景可以用到?
比如我们链接数据库,要操作数据库,程序报错了或者没报错, 都必须要执行关闭数据库
比如我们打开一个excel或者txt文档,要写入数据,无论报错或者没报错,都必须关闭这个文档
先看一个执行正常的情况
try: f = open('ztc.json','r') finally: f.close() print('已经关闭')
打印结果
已经关闭
再看看如果打开文件后,还没等文件关闭呢,就报错了
try: f = open('ztc.json','r') print(aaa) finally: f.close() print('已经关闭')
打印结果
Traceback (most recent call last):
File "C:\Users\张天赐\PycharmProjects\pythonProject\test\lianxi\111.py", line 3, in <module>
print(aaa)
NameError: name 'aaa' is not defined
已经关闭
看上面代码,显然程序打印print(aaa)的时候报错了,但是依然将打开的文件给关闭了
附录:
到此这篇关于python异常处理try的文章就介绍到这了,更多相关python异常处理内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!