捕获异常,打印异常信息

 try:  1/0  except Exception as e:  print(e)

输出结果是integer division or modulo by zero,只知道是报了这个错,但是却不知道在哪个文件哪个函数哪一行报的错。下面使用traceback模块:

traceback跟踪异常

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import tracebacktry:  1/0
except Exception as e:  traceback.print_exc()

输出的结果是:

 Traceback (most recent call last):File "/Users/zhouwanghua/Code/dot/__init__.py", line 7, in <module>1 / 0ZeroDivisionError: division by zero

这时,就更明确了

traceback.print_exc()跟traceback.format_exc()区别:

  • format_exc()返回字符串
  • print_exc()则直接给打印出来

cgitb

如果平时开发喜欢基于log的方式来调试,那么可能经常去做这样的事情,在log里面发现异常之后,因为信息不足,那么会再去额外加一些debug log来把相关变量的值输出。

调试完毕之后再把这些debug log去掉。其实没必要这么麻烦,Python库中提供了cgitb模块来帮助做这些事情,它能够输出异常上下文所有相关变量的信息,不必每次自己再去手动加debug log

如下代码片段:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def func(a, b):return a / b
if __name__ == '__main__':import cgitbcgitb.enable(format='text')import sysimport tracebackfunc(1, 0

运行之后就会得到详细的数据:

A problem occurred in a Python script.  Here is the sequence of
function calls leading up to the error, in the order they occurred./Users/samchi/Documents/workspace/tracebacktest/teststacktrace.py in <module>()4     import cgitb5     cgitb.enable(format='text')6     import sys7     import traceback8     func(1, 0)
func = <function func>/Users/samchi/Documents/workspace/tracebacktest/teststacktrace.py in func(a=1, b=0)2     return a / b3 if __name__ == '__main__':4     import cgitb5     cgitb.enable(format='text')6     import sys
a = 1
b = 0

logging

在Python中如果直接传递异常对象给log.error,那么只会在log里面出现一行异常对象的值. 在Python中正确的记录Log方式应该是这样的:

 logging.exception(ex)logging.error(ex, exc_info=1) # 指名输出栈踪迹, logging.exception的内部也是包了一层此做法logging.critical(ex, exc_info=1) # 更加严重的错误级别

python中的捕获异常、异常跟踪相关推荐

  1. 【Python面试】 列举Python中的标准异常类?

    往期面试题: 说说Python变量.函数.类的命名规则? 说说Python可变与不可变数据类型? 说说Python面向对象三大特性? 说说Python中有几种数据类型? 说说Python模块主要分哪三 ...

  2. python中exception类的_面试题 | 列举几个Python中的标准异常类?

    [摘要]今天给大家解答一道Python常见的面试题,希望这个面试栏目,给那些准备面试的同学,提供一点点帮助!小编会从最基础的面试题开始,每天一题.如果参考答案不够好,或者有错误的话,麻烦大家可以在留言 ...

  3. 在python中用于触发异常的是_下列选项中,用于触发异常的是()。 (3.0分)_学小易找答案...

    [填空题]当使用序列中不存在的____时,会引发IndexError异常. (3.0分) [简答题]2017国考地市级: (三)假如你是某报社记者,请根据"给定资料3",以&quo ...

  4. python中所有的异常类都是谁的子类_Python中所有的异常类都是____的子类。

    [简答题]假设成年人的体重和身高存在此种关系: 身高(厘米)-100 =标准体重(千克) 如果一个人的体重与其标准体重的差值在正负5%之间,显示"体重正常",其他则显示" ...

  5. 在python中、如果异常并未被处理或捕捉_7、Python-异常

    本节主要介绍Python中异常处理的原理和主要的形式. 1.什么是异常 Python中用异常对象来表示异常情况.程序在运行期间遇到错误后会引发异常.如果异常对象并未被处理或捕获,程序就会回溯终止执行. ...

  6. python中if错误-Python中错误和异常

    第1章 概念 错误 语法错误:代码不符合解释器或编译器的语法 逻辑错误:不完整或不合法的输入或者计算出现问题 异常:代码执行过程中,出现问题导致程序无法执行 程序遇到逻辑或算法问题 运行过程中计算机错 ...

  7. 在python中、如果异常并未被处理或捕捉_python异常处理(一)

    Python的异常处理能力是很强大的,可向用户准确反馈出错信息.在Python中,异常也是对象,可对它进行操作.所有异常都是基类Exception的成员.所有异常都从基类Exception继承,而且都 ...

  8. python中什么是异常,python中异常处理,python异常处理,什么是异常?异常是一

    python中异常处理,python异常处理,什么是异常?异常是一 什么是异常? 异常是一个事件,该事件会在程序的执行中发生,影响程序的正常运行,一般情况下,在python无法正常处理程序时,就会发生 ...

  9. python中traceback获取异常信息

    在日常工作中,我们常常会碰到异常,我们想在异常发生的时候,不但能显示异常发生的位置,还能看到异常方法被调用的堆栈信息,在python中怎么实现呢? 实际上python提供了一个traceback来实现 ...

最新文章

  1. 转Python 标准库 urllib2 的使用细节
  2. phpmyadmin 主机名自动补全
  3. Ubuntu 16.04卸载CUDA 6.5和安装CUDA 8.0
  4. [PHP语法]PHP基础语法与数据类型
  5. Redis禁用危险命令
  6. kubernetes视频教程笔记 (17)-Job和CronJob
  7. Easy make - emake
  8. 谷链——国内首个可落地的农产品溯源
  9. 盾神与积木游戏 (贪心典例)
  10. python抓取微博评论破亿_《战狼Ⅱ》破50亿 Python爬虫抓取获取12万条影评分析看它在说...
  11. 姜小白的python日记day2 变量和循环
  12. Mysql报错1055
  13. android hud软件,手机HUD靠谱软件选哪些?_手机_手机生活应用-中关村在线
  14. vbox虚拟机上装了银行的网络认证软件后不能正常使用的问题
  15. 怎么扫描图片存为电子版?只需要几步小操作
  16. elastic APM 深入测试 一 (无嵌套调用的分布式微服务监控)
  17. 【第7天】SQL进阶-插入记录(SQL 小虚竹)
  18. Android Toast 自定义显示时长
  19. java实现ftp跨服务器上传文件并用html5流媒体播放
  20. RGB 与YUY格式简介

热门文章

  1. 数据一致性-分区可用性-性能—多副本强同步数据库系统实现之我见
  2. Qt Creator 快捷键
  3. *** 隧道和加密技术知识要点
  4. 自由自在公司意式手工冰淇淋以“怪“取胜
  5. 【PP】SAP库存决定
  6. 【New】SAPUI5开发环境配置步骤
  7. 【PP生产订单】入门介绍(七)
  8. 销售抬头文本配置方法
  9. 为什么一般不将'在制品转出科目'设为初级成本要素
  10. 基本概念/MM相关概念