博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium 2自动化测试实战6(异常)
阅读量:4594 次
发布时间:2019-06-09

本文共 1603 字,大约阅读时间需要 5 分钟。

一、异常

python用异常队形(exception object)来表示异常情况,遇到错误后,会引发异常。如果异常对象并未被处理和捕捉,则程序就会用所谓的回溯(Traceback,一种错误信息)来终止执行。

1.认识异常

如下图所示,程序在执行时所抛出的异常。

通过open()方法以读"r"的方式打开一个abc.txt的文件。然后python抛出一个IOError类型的异常。可以通过Python所提供的try...except...语句来接收并处理这个异常。如下图所示

修改一下此代码,使其打印一个没有定义的变量,代码及其输出如下图所示

如上图所示,错误又出现了,但是此时抛出的异常是一个NameError异常,将“except IOError”修改为“except NameError”即可

知识延伸:异常的抛出机制:1.如果在运行时发生异常,则解释器会查找相应的处理语句(称为handler)。2.如果在当前函数里没有找到的话,则它会将异常传递给上层的调用函数,看看那里能不能处理。3.如果在最外层(全局“main”)还是没有找到的话,那么解释器就会退出,同时打印出Traceback,以便让用户找到错误产生的原因。注意:虽然大多数错误会导致异常,但异常不一定代表错误,有时候他们只是一个警告,有时候是一个终止信号,例如退出循环等。在python中所有的异常类都继承Exception,所以可以使用它来接收所有类型的异常。

从python2.5版本之后,所有的异常类都有了新的基类BaseException,Exception同样也继承自BaseException,所以也可以使用BaseException来接收所有类型的异常。

 

 上图例子中,只要其中一行出现了异常就会print()异常信息,所以我们并不能准确地知道到底哪一行代码引起了异常。

 所以修改一下代码,如下图所示

上例中,在BaseException后面定义看msg变量用于接收异常信息,并通过print将其打印出来。

 

python中常见的异常如表3.1所示

 

 2.更多异常用法

try....except....与 else 配合使用:

 

对aa变量进行了赋值,所以没有异常将会执行 else 语句后面的内容。通常 else 语句只有在没有异常的情况下才会被执行如下图所示,有异常则不会执行 else 语句。

 

但有些情况下不管是否出现异常,这些操作都希望能被执行,则此时可以使用 try...except...finally....语句来实现这样的需求

 

修改代码,定义aa变量

对比两次的执行结果,就可以理解了finally语句的作用

3.抛出异常

print()方法只能打印错误信息,python 中提供了 raise 方法来抛出一个异常信息。

from random import randint#生成一个1到9之间的随机整数number = randint(1,9)if number % 2 == 0:    raise NameError("%d is even " % number)else:    raise NameError("%d is odd"%number)

 输出结果如下图所示

 

通过randint()方法随机生成 1 到 9 之间的整数,然后判断这个数字是奇数还是偶数,最后通过 raise 抛出 NameError异常。其实,判断奇偶数与NameError之间没有任何关系,这里只是为了演示如何通过 raise 抛出各种类型的异常。

注意:raise 只能使用 python 中所提供的异常类,如果自定义一个 abcError 的异常,则 python 会告诉你 abcError 没有定义。 

 

 

 

 

  

 

转载于:https://www.cnblogs.com/Rita-LJ/p/11276095.html

你可能感兴趣的文章
noip模拟赛 PA
查看>>
Codeforces 717.F Heroes of Making Magic III
查看>>
noip2011 选择客栈
查看>>
poj1161
查看>>
js异步处理工作机制(setTimeout, setInterval)
查看>>
nginx报错,需要zlib和pcre
查看>>
ASP.NET Core Identity自定义数据库结构和完全使用Dapper而非EntityFramework Core
查看>>
ACM程序设计选修课——1030: Hungar的时尚球场(水题+耐心)
查看>>
NBOJv2 1034 Salary Inequity(DFS序+线段树区间更新区间(最值)查询)
查看>>
Python学习笔记之抽象
查看>>
ts, vconsle显示‘Unexpected strict mode reserved word’
查看>>
聊聊我这两年都在忙什么,IT技术男如何转型!
查看>>
HTTP协议学习总结
查看>>
oracle系列--第五篇 PLSQL连接本地的Oracle数据库
查看>>
FormData 对象的使用
查看>>
IIS7(Windows7)下最简单最强安装多版本PHP支持环境
查看>>
关于Cocos2d-x发布游戏的时候遇到的问题和解决
查看>>
CSS学习笔记之样式声明
查看>>
rtmpdump代码分析 转
查看>>
codeforces #322 div 2 D. Three Logos (枚举)
查看>>