python捕获异常时,打印异常的类型、报错文件、与报错所在的行

142 篇文章 3 订阅

捕获异常

异常的完整代码是:

try:
    raise Exception("wa")
except:
    print("报错")
else:
    print("没有报错")
finally:
    print("程序关闭")

得到结果:

报错
程序关闭

一般程序里的 tryexcept是一对,如果没有报错,会执行到else,不论是否有报错,都会执行finally

当异常发生时,会将异常的信息保存到sys.exc_info()这个方法中

官方sys.exc_info()教程:https://docs.python.org/3/library/sys.html#sys.exc_info

使用sys.exc_info()可以得到:

  • 报错类型(返回值位置1)
  • 报错信息(返回值位置2)
  • 报错信息回溯(返回值位置3)

基于报错信息可以额外得到:

  • 报错的行数
  • 报错的文件信息

详情请见【示例代码】

示例代码

import sys
import os

try:
    raise RuntimeError('这里有个报错')
except Exception as e:
    except_type, except_value, except_traceback = sys.exc_info()
    except_file = os.path.split(except_traceback.tb_frame.f_code.co_filename)[1]
    exc_dict = {
        "报错类型": except_type,
        "报错信息": except_value,
        "报错文件": except_file,
        "报错行数": except_traceback.tb_lineno,
    }
    print(exc_dict)

得到结果:

{
	'报错类型': <class 'RuntimeError'>, 
	'报错信息': RuntimeError('这里有个报错'), 
	'报错文件': 'check_except.py', 
	'报错行数': 9
}

如果是完整的流程:

try:
    print('正常的程序')
except:
    print("报错")
else:
    print("没有报错")
finally:
    print("程序关闭")

得到结果:

正常的程序
没有报错
程序关闭
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值