Python 获取异常(Exception)信息的几种方法


Posted in Python onDecember 29, 2020

异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置。下面介绍几种 Python 中获取异常信息的方法,这里获取异常(Exception)信息采用 try…except… 程序结构。

如下所示:

try:
  print(x)
except Exception as e:
  print(e)

1. str(e)

返回字符串类型,只给出异常信息,不包括异常信息的类型,如:

try:
  print(x)
except Exception as e:
  print(str(e))

打印结果:

name 'x' is not defined

2. repr(e)

给出较全的异常信息,包括异常信息的类型,如:

try:
  print(x)
except Exception as e:
  print(repr(e))

打印结果:

NameError("name 'x' is not defined",)

一般情况下,当我们知道异常信息类型后,可以对异常进行更精确的捕获,如:

try:
  print(x)
except NameError:
  print('Exception Type: NameError')
except Exception as e:
  print(str(e))

3. 采用 traceback 模块

需要导入 traceback 模块,此时获取的信息最全,与 Python 命令行运行程序出现错误信息一致。

用法:使用 traceback.print_exc() 或 traceback.format_exc() 打印错误。

区别:traceback.print_exc() 直接打印错误,traceback.format_exc() 返回字符串。

示例如下:

import traceback

try:
  print(x)
except Exception as e:
  traceback.print_exc()

等价于:

import traceback

try:
  print(x)
except Exception as e:
  msg = traceback.format_exc()
  print(msg)

打印结果都是:

Traceback (most recent call last):
 File "E:/study/python/get_exception.py", line 4, in <module>
  print(x)
NameError: name 'x' is not defined

traceback.print_exc() 还可以接受 file 参数直接写入到一个文件。比如:

# 写入到 tb.txt 文件中
traceback.print_exc(file=open('tb.txt','w+'))

以上就是Python 获取异常(Exception)信息的几种方法的详细内容,更多关于python 获取异常信息的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python里disconnect UDP套接字的方法
Apr 23 Python
Python使用matplotlib简单绘图示例
Feb 01 Python
利用Python在一个文件的头部插入数据的实例
May 02 Python
对python 命令的-u参数详解
Dec 03 Python
Python实现的线性回归算法示例【附csv文件下载】
Dec 29 Python
python中logging模块的一些简单用法的使用
Feb 22 Python
浅谈python3.6的tkinter运行问题
Feb 22 Python
python如何将两张图片生成为全景图片
Mar 05 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
Jun 10 Python
numpy中生成随机数的几种常用函数(小结)
Aug 18 Python
在vscode中启动conda虚拟环境的思路详解
Dec 25 Python
Flask处理Web表单的实现方法
Jan 31 Python
python 将html转换为pdf的几种方法
Dec 29 #Python
python实现ping命令小程序
Dec 28 #Python
如何用python 操作zookeeper
Dec 28 #Python
Pycharm在指定目录下生成文件和删除文件的实现
Dec 28 #Python
Python用Jira库来操作Jira
Dec 28 #Python
python性能测试工具locust的使用
Dec 28 #Python
Python+kivy BoxLayout布局示例代码详解
Dec 28 #Python
You might like
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
PHP中关键字interface和implements详解
2017/06/14 PHP
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
Js+Ajax,Get和Post在使用上的区别小结
2016/06/08 Javascript
javascript类型系统_正则表达式RegExp类型详解
2016/06/24 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
2018/05/28 Python
python3实现猜数字游戏
2020/12/07 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
python中wheel的用法整理
2020/06/15 Python
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
求职推荐信范文
2013/12/01 职场文书
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
个人自荐书怎么写
2015/03/26 职场文书