前言

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

"""

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

  1. python Intel Real Sense D435 异常检测与抛出(获取/打印异常详细信息 traceback.print_exc())

    文章目录 背景描述 首先熟悉一下python异常处理的几个关键字 摄像头USB断开异常 获取异常详细信息 背景描述 在摄像头运行的时候,有时候会遇到一些错误,比如帧传输错误引起的程序结束, 但更为严重 ...

  2. Java 异常处理(标准抛异常、异常处理、多异常、Finally、多线程异常处理、获取异常的堆栈信息、链试异常、自定义异常)

    使用 catch 处理异常(标准抛异常) public class Main {public static void main (String args[]) {int array[]={20,20, ...

  3. python 爬取_Python爬虫爬取马蜂窝北京景点信息

    背景 来北京有些日子了,但是每个周末都窝在六环外的村里躺着.想想不能再这么浪费时间了,得出去玩!但是去哪玩呢?于是乎想着,先把北京的景点以及位置都保存起来,然后在分析分析做个出行计划.从哪里获取景点信 ...

  4. python 打印的异常回溯和代码不对应

    正在运行的程序没有停止 又重新install了导致site-packages里的代码改变 正在运行的是老代码, 当出现异常时打印的行数是老代码,但显示的行的内容时新代码 转载于:https://www ...

  5. python queue 调试_Python:Queue.Empty异常处理

    在与某人就Python中的异常处理(由队列对象的处理引发)进行了一次简短的辩论之后,我想我应该把它扔掉... 方法1:import Queue q = Queue.Queue() try: task= ...

  6. 打包python程序发布_Python代码的打包与发布详解

    在python程序中,一个.py文件被当作一个模块,在各个模块中定义了不同的函数.当我们要使用某一个模块中的某一个函数时,首先须将这个模块导入,否则就会出现函数未定义的情况. 下面记录的是打包及安装包 ...

  7. python居中填充_Python代码中 如何将字符串填充为指定长度并保持原字符串居中呢?...

    摘要: 下文讲述Python代码中字符串填充的方法分享,如下所示: 字符串填充有很多方法, 如for循环填充,while循环填充 那么Python语言中,到底有没有快捷方式对字符串进行填充呢? 下文将 ...

  8. python linux 优化_Python 代码性能优化技巧

    Python 性能优化除了改进算法,选用合适的数据结构之外,还有几种关键的技术,比如将关键 python 代码部分重写成 C 扩展模块,或者选用在性能上更为优化的解释器等,这些在本文中统称为优化工具. ...

  9. python重构函数_Python代码重构

    代码重构是一件非常辛苦却非常有意义的事情,代码重构的原因在于: 1.代码过于冗余.沉余 2.代码过于耦合 3.代码过于复杂 4.接口调用超出三层 这次重构主要在于架构问题,自己没有画出实现整个项目的功 ...

最新文章

  1. 分布式锁用Redis好?还是Zookeeper好?
  2. Android中的ListView实现图片文字和按钮
  3. 后盾网lavarel视频项目---3、lavarel中子控制器继承父控制器以判断是否登录
  4. 【NOIP2013模拟】黑魔法师之门
  5. Python_Tips[1] - 利用 Python 的字典实现 Switch 功能
  6. 将ALV GRID中改变的值更新到ALV内表中
  7. android 自动打包脚本,Jenkins实现Android自动化打包
  8. WebIDE discovery when destination is selected from dropdown list
  9. python提取excel数据视频_Python-爬取b站的热门视频并导入Excel中
  10. winXP 下安装python3.3.2
  11. 国产数据库年终大盘点!
  12. Android-7.0-Nuplayer概述
  13. java基础学习(4)
  14. 实战项目——编辑器实现C#/C++可视化编程#WinFrom
  15. 浙大pintia答案c语言,浙大版《C语言程序设计(第3版)》题目集 - 学习笔记 - 编程题 - 习题3-3 出租车计价...
  16. 论文笔记 Inverting Visual Representations with Convolutional Networks
  17. 社交app的变现方式有哪些?
  18. 怎样和控制欲很强的家人相处-不受他人影响
  19. 李沐的深度学习笔记来了!
  20. 简述linux操作系统的功能是什么,什么是Linux操作系统及其功能

热门文章

  1. 【产品】PRD需求文档:云迹扶教(公益支教APP)
  2. HDU-1811-Rank of Tetris
  3. 勇士挂机 鸿蒙,勇士挂机战士攻略
  4. 微信开发--微信公众号相关配置--添加子管理员
  5. python基础教程 excel_Python新手入门:Excel基本操作(二)
  6. Windows命令行cmd之cd命令用法
  7. 创米数联创业板IPO被终止:曾拟募资6.44亿 小米是重要股东
  8. 大学计算机平面设计教学实施报告,设计课程论文,关于高校平面设计课程CoreIDRAW图形设计的教学改革相关参考文献资料-免费论文范文...
  9. 软件测试工程师——写给工作三年以内的你
  10. mcbbs mysql数据库_我的世界服务器CMI - 多功能基础插件 - 永久更新