python 异常回溯_Python 代码的异常处理和打印异常信息

前言

1、Python的异常处理可以向用户准确反馈出错信息,所有异常都是基类Exception的子类。自定义异常都是从基类Exception中继承。Python自动将所有内建的异常放到内建命名空间中,所以程序不必导入exceptions模块即可使用异常。

2、需要查看详细的错误信息需导入import traceback模块

捕获异常的方式

方法一:捕获所有的异常

try:

1/0

except Exception:

print (Exception)

"""输出异常类"""

方法二:采用traceback模块查看异常,需要导入traceback模块,这个方法会打印出异常代码的行号

try:

1/0

except:

traceback.print_exc()

"""输出:

Traceback (most recent call last):

File "C:/Users/Administrator/Desktop/demo04.py", line 123, in

1/0

ZeroDivisionError: division by zero

"""

方法三:采用sys模块回溯最后的异常

try:

1/0

except:

info = sys.exc_info()

print(info)

print(info[0])

print(info[1])

"""输出

(, ZeroDivisionError('division by zero',), )

division by zero

"""

获取函数名和行号

上面介绍的方法二回打印出问题代码的行号,还有一些方法可以获取函数名和行号

import sys

def get_cur_info():

"""Return the frame object for the caller's stack frame."""

try:

raise Exception

except:

f = sys.exc_info()[2].tb_frame.f_back

return (f.f_code.co_name, f.f_lineno)

def callfunc():

print(get_cur_info())

if __name__ == '__main__':

callfunc()

"""输出:

('callfunc', 131)

"""

import sys

def get_cur_info():

# 获取当前函数名

print(sys._getframe().f_code.co_name)

# 获取调用函数名(A调用B函数,获取A的函数名)

print(sys._getframe().f_back.f_code.co_name)

get_cur_info()

"""输出:

get_cur_info

"""

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值