错误处理(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继续运行

Python错误处理和调试的更多相关文章

  1. python错误和调试

    在程序运行过程中,总会遇到各种各样的错误. 有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的. 有的错误是用户输入造成的,比如让用 ...

  2. python: 错误处理try详解 ,traceback调用栈, 调试(logging)

    摘录:https://www.liaoxuefeng.com/wiki/1016959663602400/1017598873256736 错误处理 调试 错误处理 高级语言都会使用内置的一套try. ...

  3. 笔记:Python异常处理与程序调试

    Python异常处理与程序调试 Python提供了强大的异常处理机制,通过捕获异常可以提高程序的健壮性.异常处理还具有释放对象,中止循环的运行等作用.在程序运行的过程中,如果发生了错误,可以返回事先约 ...

  4. paip.python错误解决24

    paip.python错误解决 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax ...

  5. paip.python错误解决23

    paip.python错误解决 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax ...

  6. 17. javacript高级程序设计-错误处理与调试

    1. 错误处理与调试 l 在可能发生错误的地方使用try-catch方法,可以对错误进行及时的相应 l 使用window.onerror事件处理程序,这种方式可以接受try-catch不能处理的所有错 ...

  7. 段错误bug的调试

    我们在用C/C++语言写程序的时侯,内存管理的绝大部分工作都是需要我们来做的.实际上,内存管理是一个比较繁琐的工作,无论你多高明,经验多丰富,难 免会在此处犯些小错误,而通常这些错误又是那么的浅显而易 ...

  8. 第一百二十三节,JavaScript错误处理与调试

    JavaScript错误处理与调试 学习要点: 1.浏览器错误报告 2.错误处理 3.错误事件 4.错误处理策略 5.调试技术 6.调试工具 JavaScript在错误处理调试上一直是它的软肋,如果脚 ...

  9. Python如何实现单步调试

    遇到大型python项目,如何定位问题和监控程序的运行状态是一个程序员必须掌握的技能,今天小编为你带来python程序的单步调试方法,方便易用,简单易记! 首先你需要在所调试程序的开头中:import ...

随机推荐

  1. C#实例,熟练使用泛型数组等,课程选择小软件

    CourseItem.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  2. 坑爹的shell 空格

    shell 空格很敏感,被线上代码坑了,占个位,回头好好整理一下

  3. LRC歌词文件读取代码

    /**************************************************/ /*******************-main文件-******************* ...

  4. ARM NEON 64bit 查找表替换

    没啥效果,如果表的长度在 64个uint8_t之类,应该可以提高查表速度,否则还是C来的快 #ifdef HAVE_NEON_AARCH64 void table_lookup_AArch64_neo ...

  5. [原创]java WEB学习笔记24:MVC案例完整实践(part 5)---删除操作的设计与实现

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  6. 日期类(C++实现)

    //-------------------------------------------------------------------------- /* **功能:实现日期的简单操作 ** ** ...

  7. [算法]旋转矩阵问题(Spiral Matrix)

    题目一: Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spir ...

  8. Havel-Hakimi定理 POJ1659

    对于图的所有顶点,计算出每个顶点的度,度序列.给定一个序列判断序列是否可图. #include<cstdio> #include<algorithm> #include< ...

  9. Spring中如何动态注入Bean实例教程

    前言 在Spring中提供了非常多的方式注入实例,但是由于在初始化顺序的不同,基于标注的注入方式,容易出现未被正确注入成功的情况. 本文将介绍一种在实际项目中基于动态的方式来提取Spring管理的Be ...

  10. javascript中的this值

    如何确定this的值  this值会被传递给所有函数,this的值是基于运行时调用函数的上下文. 例如:从全局作用域调用sayFoo函数时,this引用window对象, 当它作为myObject的一 ...