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