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字符转换
Sep 06 Python
python实现的udp协议Server和Client代码实例
Jun 04 Python
python人人网登录应用实例
Sep 26 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
Python中的 sort 和 sorted的用法与区别
Aug 10 Python
Python如何使用argparse模块处理命令行参数
Dec 11 Python
利用pytorch实现对CIFAR-10数据集的分类
Jan 14 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
Apr 30 Python
Pandas实现一列数据分隔为两列
May 18 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
在python下实现word2vec词向量训练与加载实例
Jun 09 Python
python中zip()函数遍历多个列表方法
Feb 18 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
玛琪朵 Macchiato
2021/03/03 咖啡文化
PHP 文件上传功能实现代码
2009/06/24 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
2019/10/10 PHP
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
2016/03/13 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
JavaScript队列、优先队列与循环队列
2016/11/14 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
JS canvas绘制五子棋的棋盘
2020/05/28 Javascript
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
vue生命周期的探索
2019/04/03 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
[01:02]2014 DOTA2国际邀请赛中国区预选赛 现场抢先看
2014/05/22 DOTA
详谈Python 窗体(tkinter)表格数据(Treeview)
2018/10/11 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
CSMA/CD介质访问控制协议
2015/11/17 面试题
幼儿园庆六一活动方案
2014/03/06 职场文书
生产操作工岗位职责
2014/09/16 职场文书
车辆年审委托书范本
2014/09/18 职场文书
四风对照检查剖析材料
2014/10/07 职场文书
幼儿园小班个人总结
2015/02/12 职场文书