概述
异常处理结构
- Python内置异常类层次结构
- 异常处理结构
- try...except...
- try...except...else...
- try...except...finally...
- 可以捕捉多种异常的异常处理结构
- 单元测试unittest
Python内置异常类层次结构
Python内置异常类层次结构
异常处理结构
- 先尝试运行代码,如果没有问题就正常执行,如果发生了错误尝试着去捕获和处理,最后实在没办法了才崩溃
try…except…
- try子句中的代码块包含可能会引发异常语句,except子句则用来捕捉相应异常
- 如果try子句中的代码引发异常并被except子句捕捉,就执行except子句的代码块
- 如果try中的代码块没有出现异常就继续往下执行异常处理结构后面的代码
- 如果出现异常但没有被except捕获,继续往外层抛出
- 如果所有层都没有捕获并处理该异常,程序崩溃并将该异常呈现给最终用户
try:
#可能会引发异常的代码,先执行一下试试
except Exception[as reason]:
#如果try中的代码抛出异常并被except捕捉,就执行这里的代码
>>> while True:
x=input('Please input:')
try:
x=int(x)
print('You have input{0}'.format(x))
break
except Exception as e:
print('Error')
Please input:23s
Error
Please input:4
You have input4
try…except…else…
- 如果try中的代码抛出了异常并且被except语句捕捉则执行相应的异常处理代码,这种情况下就不会执行else中的代码
- 如果try中的代码没有引发异常,则执行else块的代码
try:
#可能会引发异常的代码
except Exception[as reason]:
#用来处理异常的代码
else:
#如果try子句中的代码没有引发异常,就继续执行这里的代码
- 不要把太多代码放在try中,而是应该只放真的可能会引发异常的代码
>>> while True:
x=input('Please input')
try:
x=int(x)
except Exception as e:
print('Error')
else:
print('You have input {0}'.format(x))
break
Please input8c
Error
Please input8
You have input 8
try…except…finally…
- 在这种结构中,无论try中的代码是否发生异常,也不管抛出的异常有没有被except语句捕获,finally子句中的代码总是会得到执行
- 所以,finally中的代码常用来做一些清理工作,例如释放try子句中的代码申请的资源
try:
#可能会引发异常的代码
except Exception [as reason]:
#处理异常的代码
finally:
#无论try子句中的代码是否引发异常,都会执行这里的代码
可以捕捉多种异常的异常处理结构
try:
#可能会引发异常的代码
except Exception1:
#处理异常类型1的代码
except EXception2:
#处理异常类型2的代码
except Exception3:
#处理异常类型3的代码
.
.
.
- 可以同时包含else子句、except子句和finally子句
单元测试unittest
- 软件测试的方法有很多,从软件工程角度来讲,可以分为白盒测试和黑盒测试两大类
- 白盒测试主要通过阅读程序源代码来判断是否符合功能要求
- 黑盒测试不关心模块的内部实现方式,只关心其功能是否正确,通过精心设计一些测试用例来检验模块的输入和输出是否正确,最终判断是否符合预定的功能要求
- 一般一般黑河测试为主,白盒测试为辅
- Python标准库unittest提供了大量用于单元测试的类和方法,其中最常用的是TestCase类
方法名称 | 功能说明 |
---|---|
assertEqual(a,b) | a==b |
assertTrue(x) | bool(x) is True |
assertIs(a,b) | a is b |
assertIsNone(x) | x is None |
assertIn(a,b) | a in b |
assertIsInstance(a,b) | isinstance(a,b) |
assertAlmostEqual(a,b) | round(a-b,7)==0 |
assertGreater(a,b) | a>b |
assertLess(a,b) | a<b |
assertRegex(s,r) | r.search(s) |
assertNotEqual(a,b) | a!=b |
assertFalse(x) | bool(x) is Flase |
assertIsNot(a,b) | a is not b |
assertIsNotNone(x) | x is not None |
assertNotIn(a,b) | a not in b |
assertNotIsInstance(a,b) | not isinstance(a,b) |
assertNotAlmostEqual(a,b) | round(a-b,7)!=0 |
assertGreaterEqual(a,b) | a>=b |
assertLessEqual(a,b) | a<=b |
assertNotRegex(s,r) | not r.search(s) |
setUp() | 每项测试开始之前自动调用该函数 |
tearDown() | 每次测试完成之后自动调用该函数 |
最后
以上就是勤恳马里奥为你收集整理的异常处理结构Python内置异常类层次结构异常处理结构单元测试unittest的全部内容,希望文章能够帮你解决异常处理结构Python内置异常类层次结构异常处理结构单元测试unittest所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复