Python中获取异常(Exception)信息

本文介绍了Python中多种获取异常信息的方法,包括使用str(e)、repr(e)、e.message及traceback模块等,帮助开发者有效定位并解决程序错误。
部署运行你感兴趣的模型镜像

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

复制代码
try:

  ...

except Exception, e:

  ...
复制代码

 

1、str(e)

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

'integer division or modulo by zero'

2、repr(e)

给出较全的异常信息,包括异常信息的类型,如1/0的异常信息

"ZeroDivisionError('integer division or modulo by zero',)"

3、e.message

获得的信息同str(e)

4、采用traceback模块

  需要导入traceback模块,此时获取的信息最全,与python命令行运行程序出现错误信息一致。使用traceback.print_exc()打印异常信息到标准错误,就像没有获取一样,或者使用traceback.format_exc()将同样的输出获取为字符串。你可以向这些函数传递各种各样的参数来限制输出,或者重新打印到像文件类型的对象。

 

示例如下:

复制代码
import traceback

print '########################################################'
print "1/0 Exception Info"
print '---------------------------------------------------------'
try:
    1/0
except Exception, e:
    print 'str(Exception):\t', str(Exception)
    print 'str(e):\t\t', str(e)
    print 'repr(e):\t', repr(e)
    print 'e.message:\t', e.message
    print 'traceback.print_exc():'; traceback.print_exc()
    print 'traceback.format_exc():\n%s' % traceback.format_exc()
print '########################################################'
print '\n########################################################'  
print "i = int('a') Exception Info"
print '---------------------------------------------------------'
try:
    i = int('a')
except Exception, e:
    print 'str(Exception):\t', str(Exception)
    print 'str(e):\t\t', str(e)
    print 'repr(e):\t', repr(e)
    print 'e.message:\t', e.message
    print 'traceback.print_exc():'; traceback.print_exc()
    print 'traceback.format_exc():\n%s' % traceback.format_exc()
print '########################################################' 
复制代码

 

示例结果

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

Python 中,获取异常Exception)的错误信息(message)有多种方式,最常用的是通过 `str(exception)` 或 `exception.args` 来获取。下面详细介绍如何正确捕获并提取异常信息。 ### 示例:获取 Exception 的 message ```python try: # 故意触发一个异常 result = 10 / 0 except Exception as e: # 方法1:直接将异常转为字符串(推荐,最常用) print("异常信息str(e)):", str(e)) # 方法2:使用 repr(e),包含更详细的类型和信息(用于调试) print("异常详情(repr(e)):", repr(e)) # 方法3:获取异常参数元组(e.args),通常第一个元素是消息 if e.args: print("异常参数 args[0]:", e.args[0]) else: print("异常无参数") ``` 输出: ``` 异常信息str(e)): division by zero 异常详情(repr(e)): ZeroDivisionError('division by zero') 异常参数 args[0]: division by zero ``` --- ### 解释: 1. **`str(e)`** - 返回异常的可读性消息(人类可读),是最常用的获取错误信息的方式。 - 例如:`"division by zero"` 2. **`repr(e)`** - 返回异常的“官方”字符串表示,包含异常类型和参数,适合调试。 - 例如:`ZeroDivisionError('division by zero')` 3. **`e.args`** - 异常构造函数传入的参数元组。大多数异常的第一个参数是错误消息。 - 对于多参数异常(如自定义异常),可以遍历 `args` 获取所有信息。 4. **自定义异常示例:** ```python try: raise ValueError("用户名不能为空", "field: username", 400) except Exception as e: print("异常消息 str(e):", str(e)) print("所有参数 args:", e.args) ``` 输出: ``` 异常消息 str(e): 用户名不能为空 所有参数 args: ('用户名不能为空', 'field: username', 400) ``` --- ### 实际应用:记录日志时获取完整异常信息 ```python import logging logging.basicConfig(level=logging.INFO) try: with open("nonexistent.txt", "r") as f: content = f.read() except FileNotFoundError as e: logging.error(f"文件未找到: {str(e)}") # 或者打印详细信息 logging.error(f"完整异常: {repr(e)}") ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值