Python 捕获代码中所有异常的方法


Posted in Python onAugust 03, 2020

问题

怎样捕获代码中的所有异常?

解决方案

想要捕获所有的异常,可以直接捕获 Exception 即可:

try:
  ...
except Exception as e:
  ...
  log('Reason:', e)    # Important!

这个将会捕获除了 SystemExitKeyboardInterruptGeneratorExit 之外的所有异常。 如果你还想捕获这三个异常,将 Exception 改成 BaseException 即可。

讨论

捕获所有异常通常是由于程序员在某些复杂操作中并不能记住所有可能的异常。 如果你不是很细心的人,这也是编写不易调试代码的一个简单方法。

正因如此,如果你选择捕获所有异常,那么在某个地方(比如日志文件、打印异常到屏幕)打印确切原因就比较重要了。 如果你没有这样做,有时候你看到异常打印时可能摸不着头脑,就像下面这样:

def parse_int(s):
  try:
    n = int(v)
  except Exception:
    print("Couldn't parse")

试着运行这个函数,结果如下:

>>> parse_int('n/a')
Couldn't parse
>>> parse_int('42')
Couldn't parse
>>>

这时候你就会挠头想:“这咋回事啊?” 假如你像下面这样重写这个函数:

def parse_int(s):
  try:
    n = int(v)
  except Exception as e:
    print("Couldn't parse")
    print('Reason:', e)

这时候你能获取如下输出,指明了有个编程错误:

>>> parse_int('42')
Couldn't parse
Reason: global name 'v' is not defined
>>>

很明显,你应该尽可能将异常处理器定义的精准一些。 不过,要是你必须捕获所有异常,确保打印正确的诊断信息或将异常传播出去,这样不会丢失掉异常。

以上就是Python 捕获代码中所有异常的方法的详细内容,更多关于Python 捕获异常的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现监控windows服务并自动启动服务示例
Apr 17 Python
利用Python绘制MySQL数据图实现数据可视化
Mar 30 Python
python实现的简单RPG游戏流程实例
Jun 28 Python
栈和队列数据结构的基本概念及其相关的Python实现
Aug 24 Python
Python读取word文本操作详解
Jan 22 Python
Django自定义用户认证示例详解
Mar 14 Python
完美解决python中ndarray 默认用科学计数法显示的问题
Jul 14 Python
python 有效的括号的实现代码示例
Nov 11 Python
Numpy之将矩阵拉成向量的实例
Nov 30 Python
python 实现dict转json并保存文件
Dec 05 Python
python在不同条件下的输入与输出
Feb 13 Python
python图片验证码识别最新模块muggle_ocr的示例代码
Jul 03 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 #Python
Python pip使用超时问题解决方案
Aug 03 #Python
python时间序列数据转为timestamp格式的方法
Aug 03 #Python
python3 中使用urllib问题以及urllib详解
Aug 03 #Python
Python txt文件常用读写操作代码实例
Aug 03 #Python
Python连接Mysql进行增删改查的示例代码
Aug 03 #Python
Python如何在单元测试中给对象打补丁
Aug 03 #Python
You might like
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
3款值得推荐的微信开发开源框架
2014/10/28 PHP
CI框架中site_url()和base_url()的区别
2015/01/07 PHP
php的4种常见运行方式
2015/03/20 PHP
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
使用Thinkphp框架开发移动端接口
2015/08/05 PHP
XP折叠菜单&仿QQ2006菜单
2006/12/16 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
jQuery实现鼠标划过展示大图的方法
2015/03/09 Javascript
JS修改iframe页面背景颜色的方法
2015/04/01 Javascript
JavaScript中的prototype原型学习指南
2016/05/09 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
微信小程序 页面跳转和数据传递实例详解
2017/01/19 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
python基础教程项目四之新闻聚合
2018/04/02 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
python自动化unittest yaml使用过程解析
2020/02/03 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
CSS3的calc()做响应模式布局的实现方法
2017/09/06 HTML / CSS
美国电视购物:QVC
2017/02/06 全球购物
心得体会开头
2014/01/01 职场文书
大学新生欢迎词
2014/01/10 职场文书
新年联欢会主持词
2014/03/27 职场文书
经济贸易专业自荐信
2014/06/11 职场文书
学校周年庆活动方案
2014/08/22 职场文书
市级三好学生事迹材料
2014/08/27 职场文书
好媳妇事迹材料
2014/12/24 职场文书
工作收入证明模板
2015/06/12 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书
运动会主持词大全
2015/07/02 职场文书
导游词之平津战役纪念馆
2019/11/04 职场文书
Mac电脑OS系统下安装Nginx的详细教程
2022/04/14 Servers