在写 Python 代码的时候,当代码中出现错误,会在输出的时候打印 Traceback  错误信息,很多初学者看到那一堆错误信息,往往都会处于懵逼状态,脑中总会冒出一句,这都是些啥玩意。如果你是第一次看到它,也许你不知道它在告诉你什么。虽然 Python 的 Traceback  提示信息看着挺复杂,但是里面丰富的信息,可以帮助你诊断和修复代码中引发异常的原因,以及定位到具体哪个文件的哪行代码出现的错误,所以说学会看懂 Traceback  信息是非常重要的,另外在面试的时候也经常会问到 Python 中的异常类型及其含义,那么,接下来就让我们对其进行详细理解。

什么是 Traceback

Traceback 是 Python  错误信息的报告。在其他编程语言中有着不同的叫法包括 stack trace, stack  traceback, backtrac  等名称, 在 Python  中,我们使用的术语是 Traceback。后面我提到的错误信息等词都表示Traceback。

当你的程序导致异常时,Python 将打印 Traceback 以帮助你知道哪里出错了。下面是一个例子来说明这种情况

# example.py

def  greet(someone ):

print('Hello, ' + someon )

greet('Chad')

这里首先定义了函数 greet,然后传入参数 someone,然后函数内,一个 print  语句其中 someon  是一个没有定义的变量,然后通过 greet ('Chad'),调用刚才定义的 greet  函数,运行之后会出现如下错误信息。

(Python 中的错误信息开头就是 Traceback。)Traceback  (most  recent  call  last ):

File  '/Users/chenxiangan/pythonproject/demo/exmpale.py', line  5, in

greet ('Chad')

File  '/Users/chenxiangan/pythonproject/demo/exmpale.py', line  3, in  greet

print ('Hello, ' + someon )

NameError: name  'someon' is  not  defined

此错误输出包含诊断问题所需的所有信息。错误输出的最后一行一般会告诉你引发了什么类型的异常,以及关于该异常的一些相关信息。错误信息的前几行指出了引发异常的代码文件以及行数。

在上面的错误信息中,异常类型是 NameError,意思是名称使用了一个没定义的名称(变量、函数、类)的引用。在本例中,引用的名称是 someon。

一般情况下看错误信息的最后一行就能定位到错误的原因。然后在代码中搜索错误提示中的名称'someon',然后发现这是一个拼写错误,然后我们改成 someone  即可。

然而,有些代码的错误信息要比这个复杂的多。

如何阅读 Python 的 Traceback  信息?

当你想确定代码为什么引发异常的时侯,可以根据 Python  的 Traceback  获取许多有用的信息。下面,将列举一些常见的 Traceback,以便理解 Tracebac 中包含的不同信息。

Python Traceback 信息一览

每个 Python 的 Traceback  信息都有几个重要的部分。下图显示了各个组成部分:

蓝框:Traceback 的最后一行为错误消息行。其中包含引发的异常名称。

绿框:异常名称后面是错误消息。此消息通常包含有用的信息,用于了解引发异常的原因。

黄色方框:阅读顺序由下而上,最下面的信息,是抛出错误的最外层的位置,越往上代码调用深度越深。

然后每个出错的文件会有两条错误信息,第一行是 File 后面紧跟着文件的路径,然后是行数,最后是模块或者方法名。

在 Pycharm  中点击文件的链接即可定位到错误的位置。

红色下划线:第二行就是实际执行的代码语句了。

一个具体的

python中什么是异常_一文教你读懂 Python 中的异常信息相关推荐

  1. 1688学python学不会_还在害怕学不会Python嘛?这篇文章让你瞬间读懂Python入门!...

    零基础学习Python能学会吗?这个问题几乎是所有初学Python的小白都会问到的问题.其实Python是非常适合初学者入门的,相较于其他主流类编程语言,Python具有更好的可读性,因此上手更容易, ...

  2. python课堂实例_享学课堂带你了解并读懂Python列表中的6种操作实例

    原标题:享学课堂带你了解并读懂Python列表中的6种操作实例 今天为大家来介绍一下很多人在享学课堂上学习Python时,经常会用到列表,列表(list)就是动态数组,相当于C++标准库的Vector ...

  3. python读取枚举_一文读懂Python 枚举

    enum是一组绑定到唯一常数值的符号名称,并且具备可迭代性和可比较性的特性.我们可以使用 enum 创建具有良好定义的标识符,而不是直接使用魔法字符串或整数,也便于开发工程师的代码维护. 创建枚举 我 ...

  4. python输入什么就输出什么_一文读懂Python的输入和输出

    本文介绍了Python的输入和输出,既然是Python代码,那么就一定有输出量,那么,Python是如何输出的呢? 输出 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字.比如输出'h ...

  5. 读懂python中的self

    读懂python中的self 链接https://blog.csdn.net/xrinosvip/article/details/89647884

  6. java中date类型如何赋值_一文读懂java中的Reference和引用类型

    简介 java中有值类型也有引用类型,引用类型一般是针对于java中对象来说的,今天介绍一下java中的引用类型.java为引用类型专门定义了一个类叫做Reference.Reference是跟jav ...

  7. python项目归纳总结-这4个Python实战项目,让你瞬间读懂Python!

    原标题:这4个Python实战项目,让你瞬间读懂Python! 来自:https://www.toutiao.com/a6593456515221291528/ Python 是一种极具可读性和通用性 ...

  8. 一文读懂Java中File类、字节流、字符流、转换流

    一文读懂Java中File类.字节流.字符流.转换流 第一章 递归:File类: 1.1:概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. ...

  9. 一文读懂SpringBoot中的事件机制

    一文读懂SpringBoot中的事件机制?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法. 要"监听"事件,我们总是 ...

最新文章

  1. 经典再读 | NASNet:神经架构搜索网络在图像分类中的表现
  2. Machine Learning | 基于逻辑回归做二分类进行癌症预测
  3. Java 最坑爹的 10 大功能点!
  4. reactjs ref属性:字符串类型的ref和createRef
  5. boost::pfr::detail::offset_based_getter相关的测试程序
  6. MySQL 字段约束 null, not null, default, auto_increment
  7. 数据结构与算法-- 二叉树中和为某一值的路径
  8. 红黑树的红黑标志有什么用
  9. 互联网(IT)大厂面试技巧(面经)
  10. python 可视化_Python数据可视化
  11. SpringBoot三招组合拳,手把手教你打出优雅的后端接口
  12. “360行,行行转前端”:前端岗为什么这么火?
  13. C++ 全局变量 静态变量 全局函数 静态函数
  14. oracle迁移至ASM磁盘
  15. 基于ICD-10诊断编码的慢性病并发症聚类算法
  16. 计算机仿真题液相色谱,液相色谱法
  17. 中兴B860AV2.1-A,M,T-当贝纯净桌面-线刷固件(附刷机教程)
  18. vue中使用(瀑布流)vue-waterfall-easy插件
  19. 各种零知识证明的比较!
  20. Pygame小游戏:无敌斗牛士

热门文章

  1. c#右键点击选中DataGridView中整行
  2. 用VBA在Word文档中每页页眉插入返回文档目录中相应位置的超链接
  3. Unity 材质替换工具说明
  4. 8139网卡刷MAC
  5. Java Lambda 表达式-Steam之两个list间交集、并集、差集
  6. 计算机网络技术班级16字口号,校运会班级口号16字押韵有气势
  7. 使用ANTLR和Go实现DSL入门
  8. 服务器远程桌面输完密码闪断,远程桌面的连接闪断解决方案
  9. 云扩科技RPA机器人|助力零售行业数字转型新未来
  10. php线路图,HTML5绘制上海地铁线路图-大前端