您的位置:首页 > 编程语言 > Python开发

python异常和错误

2017-02-24 11:53 239 查看
1、try……except

try:
try_suite
except:
exception block


上面except子句不跟任何异常和异常参数,所以无论try捕获了任何异常,都将交给except子句的exception block来处理。

如果我们要处理特定的异常,比如说,我们只想处理除零异常,如果其他异常出现,就让其抛出不做处理,该怎么办呢?这个时候,我们就要给except子句传入异常参数啦!那个ExceptionN就是我们要给except子句的异常类(请参考异常类那个表格),表示如果捕获到这类异常,就交给这个except子句来处理。比如:

try:
floatnum = float(raw_input("Please input a float:"))
intnum = int(floatnum)
print 100/intnum
except ZeroDivisionError:
print "Error:you must input a float num which is large or equal then 1!"
except ValueError:
print "Error:you must input a float num!"


*Python异常类*

NameError 尝试访问一个没有申明的变量

ZeroDivisionError 除数为0

SyntaxError 语法错误

IndexError 索引超出序列范围

KeyError 请求一个不存在的字典关键字

IOError 输入输出错误(比如你要读的文件不存在)

AttributeError 尝试访问未知的对象属性

ValueError 传给函数的参数类型不正确,比如给int()函数传入字符串形

2、try……except……else

作用:就是当没有检测到异常的时候,则执行else语句

3、finally子句

finally子句是无论是否检测到异常,都会执行的一段代码。我们可以丢掉except子句和else子句,单独使用try…finally,也可以配合except等使用。

4、断言

断言就是判断是否跟预期结果一致,不一致的话,测试用例直接失败,程序便不再执行下去。

assert expression[,reason]


assert是断言的关键词,执行该语句的时候,先判断表达式expression,如果表达式为真,则什么都不做;如果表达式不为真,则抛出异常。

断言使用的主要是assertEqual的方法

如验证百度搜索的标题是否为“123_百度搜索”

self.assertEqual(u"123_百度搜索",driver.title)


如要验证是否为false

self.assertFalse(driver.title)


如要验证是否为true

self.assertTrue(driver.title)


而验证为了保证失败也能正常运行下去,一般情况下都是在验证的基础上加异常捕获

如验证百度搜索的标题是否为“123_百度搜索”

try:
self.assertEqual(u"1234_百度搜索", driver.title)
except AssertionError as e:
print u"找不到这个标题"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: