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语言的12个基础知识点小结
Jul 10 Python
深入解析Python中的集合类型操作符
Aug 19 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
python 基本数据类型占用内存空间大小的实例
Jun 12 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
Feb 07 Python
python实现手机销售管理系统
Mar 19 Python
Pandas中resample方法详解
Jul 02 Python
简单了解python 生成器 列表推导式 生成器表达式
Aug 22 Python
python安装gdal的两种方法
Oct 29 Python
python时间日期操作方法实例小结
Feb 06 Python
Python使用内置函数setattr设置对象的属性值
Oct 16 Python
Python利用matplotlib绘制折线图的新手教程
Nov 05 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版本到PHP7
2015/02/06 PHP
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
jquery实现多行文字图片滚动效果示例代码
2014/10/10 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
新手学习前端之js模仿淘宝主页网站
2016/10/31 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
MVVM框架下实现分页功能示例
2018/06/14 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
vue router 通过路由来实现切换头部标题功能
2019/04/24 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
python字符串连接的N种方式总结
2014/09/17 Python
Python文件和目录操作详解
2015/02/08 Python
详解Python当中的字符串和编码
2015/04/25 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
python调用c++传递数组的实例
2019/02/13 Python
canvas裁剪clip()函数的具体使用
2018/03/01 HTML / CSS
Canvas图片分割效果的实现
2019/07/29 HTML / CSS
西班牙最大的在线滑板和街头服饰商店:Fillow.net
2019/04/15 全球购物
中学校庆方案
2014/03/17 职场文书
幼儿园植树节活动总结
2014/07/04 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
2014年置业顾问工作总结
2014/11/17 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题
浅谈JavaScript作用域
2021/12/06 Javascript