错误处理(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: division by zero
# finally...
# END # 可以使用多个except来捕捉不同的错误信息,finally不管是否报错都一定会执行

调试

  • print()
def foo(s):
n = int(s)
print('>>> n = %d' % n)
return 10 / n
# 用print()最大的坏处是将来还得删掉它
  • 断言(assert)(凡是用print()来辅助查看的地方,都可以用断言(assert)来替代)
def foo(s):
n = int(s)
assert n != 0, 'n is zero!'
return 10 / n
#assert的意思是,表达式n != 0应该是True。否则抛出AssertionError:‘n is zero’
  • logging(logging不会抛出错误,而且可以输出到文件)
import logging
logging.basicConfig(level=logging.INFO) s = ''
n = int(s)
logging.info('n = %d' % n)
print(10 / n)
  • pdb(启动Python的调试器pdb)
$ python -m pdb err.py
输入命令l来查看代码
输入命令n可以单步执行代码
任何时候都可以输入命令p 变量名来查看变量
输入命令q结束调试,退出程序
  • pdb.set_trace()(可能出错的地方放一个pdb.set_trace(),就可以设置一个断点)
import pdb

s = ''
n = int(s)
pdb.set_trace() # 运行到这里会自动暂停
print(10 / n)
# 程序会自动在pdb.set_trace()暂停并进入pdb调试环境,可以用命令p查看变量,或者用命令c继续运行

最新文章

  1. jvm内存区域
  2. 基于X86平台的PC机通过网络发送一个int(32位)整数的字节顺序
  3. 【转】gtk+多线程的程序实例
  4. Trinity min_kmer_cov
  5. Pipe
  6. 知识梳理HTML篇
  7. 虚拟机通过NAT方式与主机、互联网通信
  8. Ubuntu彻底删除MySQL重装MySQL
  9. 怎么用CorelDRAW插入、删除与重命名页面
  10. 一个想法(续二):换个角度思考如何解决IT企业招聘难的问题!
  11. iOS多线程的初步研究(六)
  12. HTML 头标签的 <title> <base> <meta> <link> <script> 的内容意思
  13. python学习笔记1——基础
  14. javaScript识别网址文本并转为链接文本
  15. Linux 桌面玩家指南:10. 没有 GUI 的时候应该怎么玩
  16. MySQL物理备份 lvm-snapshot
  17. CSS之不常用但重要的样式总结
  18. 纪中2018暑假培训day7提高b组改题记录
  19. input date 支持placeholder属性
  20. NPOI 自定义单元格背景颜色 XSSFWorkbook - Excel

热门文章

  1. 使用微软官方U盘制作软件来安装纯净版windows
  2. Java 线程的终止-interrupt
  3. VIM YCM 插件安装问题记录
  4. Android FrameLayout单帧布局
  5. 转 开启“大数据”时代--大数据挑战与NoSQL数据库技术 iteye
  6. 每天一个Linux命令(17)whereis命令
  7. 第三章 python中的字符串
  8. Luogu-4049 [JSOI2007]合金
  9. 如何在unigui中用代码展开一棵树?
  10. 大话设计模式--外观模式 Facade -- C++实现实例