经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
Python异常处理机制、调试、测试
来源:cnblogs  作者:听着music睡  时间:2018/10/23 9:24:22  对本文有异议

类似于Java的try..catch..finally

Java的为try_except_finally

  1. try:
  2. print('try...')
  3. r = 10 / 0
  4. print('result:', r)
  5. except ZeroDivisionError as e:
  6. print('except:', e)
  7. finally:
  8. print('finally...')
  9. print('END')

try执行一段可能会发送异常的代码,如果有异常情况发送 走except , 如果没有则不走,最后不管代码有没有发送异常,都会执行finally里的代码

异常错误存在父子类问题,如果父类处理了,子类则不会再接收处理

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

调试

1、打印print

最简单的就是print 把数据打印出来再去找错误原因

问题在于会在代码中出现很多打印语句

2、断言assert

  1. assert n != 0, 'n is zero!'

assert的意思是,表达式n != 0应该是True,否则,根据程序运行的逻辑,后面的代码肯定会出错。

如果断言失败,assert语句本身就会抛出AssertionError

  1. $ python err.py
  2. Traceback (most recent call last):
  3. ...
  4. AssertionError: n is zero!

 

注:

程序中如果到处充斥着assert,和print()相比也好不到哪去。不过,启动Python解释器时可以用-O参数来关闭assert

关闭后,你可以把所有的assert语句当成pass来看。

  1. $ python -O err.py
  2. Traceback (most recent call last):
  3. ...
  4. ZeroDivisionError: division by zero

 

3、logging

logging的好处,它允许你指定记录信息的级别,有debuginfowarningerror等几个级别,当我们指定level=INFO时,logging.debug就不起作用了。同理,指定level=WARNING后,debuginfo就不起作用了。这样一来,你可以放心地输出不同级别的信息,也不用删除,最后统一控制输出哪个级别的信息。

logging的另一个好处是通过简单的配置,一条语句可以同时输出到不同的地方,比如console和文件。

  1. import logging
  2. logging.basicConfig(level=logging.INFO)
  3. s = '0'
  4. n = int(s)
  5. logging.info('n = %d' % n)
  6. print(10 / n)

  7. --------------------------------------------
  8. $ python err.py
  9. INFO:root:n = 0
  10. Traceback (most recent call last):
  11. File "err.py", line 8, in <module>
  12. print(10 / n)
  13. ZeroDivisionError: division by zero

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号