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中shutil模块的学习笔记教程
Apr 04 Python
Django框架的使用教程路由请求响应的方法
Jul 03 Python
python bmp转换为jpg 并删除原图的方法
Oct 25 Python
在python中对变量判断是否为None的三种方法总结
Jan 23 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
python超时重新请求解决方案
Oct 21 Python
python求前n个阶乘的和实例
Apr 02 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
详解Pandas 处理缺失值指令大全
Jul 30 Python
UI自动化定位常用实现方法代码示例
Oct 27 Python
使用Python实现NBA球员数据查询小程序功能
Nov 09 Python
python中的被动信息搜集
Apr 29 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
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
php递归列出所有文件和目录的代码
2008/09/10 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
js 小贴士一星期合集
2010/04/07 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
Jquery中"$(document).ready(function(){ })"函数的使用详解
2013/12/30 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
Bootstrap学习笔记之css样式设计(2)
2016/06/07 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
[00:18]天涯墨客三技能展示
2018/08/25 DOTA
python远程登录代码
2008/04/29 Python
python 中文乱码问题深入分析
2011/03/13 Python
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
单利模式及python实现方式详解
2018/03/20 Python
Python中的单继承与多继承实例分析
2018/05/10 Python
python实现日志按天分割
2019/07/22 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
中年人生感言
2014/02/04 职场文书
总经理岗位职责描述
2014/02/08 职场文书
法人代表任命书范本
2014/06/05 职场文书
社区党员公开承诺书
2014/08/30 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
员工工作及收入证明
2014/10/28 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
大学生先进个人主要事迹材料
2015/11/04 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python