Python中使用traceback模块捕获并打印异常详解

沈亦白
沈亦白
发布时间:2026-10-13 | 5人浏览过
原创

本文详细介绍Python中利用traceback模块捕获和打印异常的方法。通过对比print_exc与format_exc的区别,演示如何将异常信息直观输出至控制台或写入指定文件,并结合logging模块实现完整的错误日志记录,帮助开发者快速定位代码错误位置。

在Python开发中,异常处理是日常操作。然而,仅仅打印处理结果往往不够,我们需要将具体的异常信息也打印出来,以便更直观地展示错误详情。

接下来介绍如何使用traceback模块来处理异常。

  try:
    1/0
  except Exception, e:
    print e

如果仅使用普通的异常捕获,输出结果可能仅显示“integer division or modulo by zero”,虽然知道报错了,但无法得知具体是在哪个文件、哪个函数以及哪一行代码中发生的错误。

为了解决这个问题,我们可以使用traceback模块。

  try:
    1/0
  except Exception, e:
    traceback.print_exc()

以下是使用traceback后的输出结果示例。

Traceback (most recent call last):

File "test_traceback.py", line 3, in <module>

1/0

ZeroDivisionError: integer division or modulo by zero

这种输出方式非常直观,极大地有利于代码调试。

那么,traceback.print_exc()与traceback.format_exc()有什么区别呢?

traceback.format_exc()返回的是一个字符串对象,而traceback.print_exc()则直接将异常信息打印到标准输出。

也就是说,traceback.print_exc()的效果等同于print(traceback.format_exc())。

此外,traceback.print_exc()还可以接受file参数,直接将异常信息写入到一个文件中。例如:

traceback.print_exc(file=open('tb.txt','w+'))

上述代码会将异常信息写入到tb.txt文件中。

下面是一个完整的示例。

# -*- coding:utf-8 -*-

import os
import logging
import traceback

#设置log, 这里使用默认log
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
    datefmt='[%Y-%m_%d %H:%M:%S]',
    filename=os.path.dirname(os.path.realpath(__file__)) + "/" + 'test.log',
    filemode='a')

a=10
b=0 #设置为0, 走异常流程; 否则, 走正常流程

try:
  res=a/b
  logging.info("exec success, res:" + str(res))
except Exception,e:
  #format_exc()返回字符串,print_exc()则直接给打印出来
  traceback.print_exc()
  logging.warning("exec failed, failed msg:" + traceback.format_exc())

需要注意的是,logging模块默认的打印级别是warning。

通过配置日志格式,我们可以得到如下日志打印效果:

[2017-11_17 07:51:02] trace.py[line:24] WARNING exec failed, failed msg:Traceback (most recent call last):

File "trace.py", line 19, in <module>

res=a/b

ZeroDivisionError: integer division or modulo by zero

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表