Python异常处理机制调试测试
Posted 听着music睡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python异常处理机制调试测试相关的知识,希望对你有一定的参考价值。
类似于Java的try..catch..finally
Java的为try_except_finally
try: print(‘try...‘) r = 10 / 0 print(‘result:‘, r) except ZeroDivisionError as e: print(‘except:‘, e) finally: print(‘finally...‘) print(‘END‘)
try执行一段可能会发送异常的代码,如果有异常情况发送 走except , 如果没有则不走,最后不管代码有没有发送异常,都会执行finally里的代码
异常错误存在父子类问题,如果父类处理了,子类则不会再接收处理
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
调试
1、打印print
最简单的就是print 把数据打印出来再去找错误原因
问题在于会在代码中出现很多打印语句
2、断言assert
assert n != 0, ‘n is zero!‘
assert
的意思是,表达式n != 0
应该是True
,否则,根据程序运行的逻辑,后面的代码肯定会出错。
如果断言失败,assert
语句本身就会抛出AssertionError
:
$ python err.py
Traceback (most recent call last):
...
AssertionError: n is zero!
注:
程序中如果到处充斥着assert
,和print()
相比也好不到哪去。不过,启动Python解释器时可以用-O
参数来关闭assert
:
关闭后,你可以把所有的assert
语句当成pass
来看。
$ python -O err.py
Traceback (most recent call last):
...
ZeroDivisionError: division by zero
3、logging
logging
的好处,它允许你指定记录信息的级别,有debug
,info
,warning
,error
等几个级别,当我们指定level=INFO
时,logging.debug
就不起作用了。同理,指定level=WARNING
后,debug
和info
就不起作用了。这样一来,你可以放心地输出不同级别的信息,也不用删除,最后统一控制输出哪个级别的信息。
logging
的另一个好处是通过简单的配置,一条语句可以同时输出到不同的地方,比如console和文件。
import logging logging.basicConfig(level=logging.INFO) s = ‘0‘ n = int(s) logging.info(‘n = %d‘ % n) print(10 / n)
-------------------------------------------- $ python err.py INFO:root:n = 0 Traceback (most recent call last): File "err.py", line 8, in <module> print(10 / n) ZeroDivisionError: division by zero
以上是关于Python异常处理机制调试测试的主要内容,如果未能解决你的问题,请参考以下文章