• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

读懂Python的异常机制

python 搞代码 4年前 (2022-01-09) 28次浏览 已收录 0个评论

前言:之前工作时用python完成一个利用串口发SCPI与单片机交互通信的命令行窗口,在实现功能的时候发现用python对数据结果无论是最终正确值的返回还是错误值的返回都可以直接return给主界面。显然直接return不同含义的数据是不行的,所以采用异常机制来处理错误值的数据。因为之前对异常这方面了解的比较少,在此查了点资料并整理个小笔记。

文章目录

  • 一、对异常的理解
    • 1、什么是异常
    • 2、错误和异常的区别
    • 3、常见python异常种类
  • 二、python五大异常处理机制
    • 1、默认异常处理机制
    • 2、try….except….处理机制
    • 3、try…except…finally…..处理机制
    • 4、assert断言处理机制
    • 5、with…as处理机制
  • 三、python异常自定义
    • 1、异常自定义
    • 2、异常抛出raise
    • 3、异常捕获
  • 四、异常使用注意事项
    • 1、不要太依赖异常机制
    • 2、不要在 try 块中引入太多的代码
    • 3、不要忽略捕获到的异常
  • 总结

(免费学习推荐:python视频教程

一、对异常的理解

1、什么是异常

  异常即“与正常情况不同”,何为正常?正常便是解释器在解释代码时,我们所编写的代码符合解释器定义的规则,即为正常,当解释器发现本文来源gao($daima.com搞@代@#码(网某段代码符合语法但有可能出现不正常的情况时,解释器便会发出一个事件,中断程序的正常执行。这个中断的信号便是一个异常信号。所以,总体解释就是,在解释器发现到程序出现错误的时候,则会产生一个异常,若程序没有处理,则会将该异常抛出,程序的运行也随之终止。我们可以在一个空白的.py文件中写一句int(“m”),运行后结果如下。

  这一串字体为解释器抛出的一系列错误信息,因为int()传入的参数只支持数字字符串和数字,显然‘m’不属于数字字符串传入参数错误所以解释器报“valueError”的错误。

2、错误和异常的区别

  对于python错误的概述:它指的是代码运行前的语法或逻辑错误。拿常规语法错误来说,当我们编写的代码过不了语法检测时,则会直接出现语法错误,必须在程序执行前就改正,不然写的代码将毫无意义,代码是不运行的,也无法捕获得到。举个例子,在.py文件输入if a = 1 print(“hello”),输出结果如下:

  Traceback (most recent call last):
  	File "E:/Test_code/test.py",line 1
    	if a = 1 print("hello")
                ^SyntaxError: invalid syntax

  函数 print() 被检查到有错误,是它前面缺少了一个冒号 : ,所以解析器会复现句法错误的那行代码,并用一个小“箭头”指向行里检测到的第一个错误,所以我们可以直接找到对应的位置修改其语法。当然除了语法错误,还有很多程序奔溃的错误,如内存溢出等,这类错误往往比较隐蔽。
  相比于错误,python异常主要在程序执行过程中,程序遇见逻辑或算法问题,这时解释器如果可以处理,则没问题,如果处理不了,便直接终止程序,便将异常抛出,如第1小点的int(‘m’)例子,因为参数传入错误导致程序出错。这种因为逻辑产生的异常五花八门,还好我们的解释器都内置好了各种异常的种类,让我们知道是什么样的异常出现,好让我们“对症下药”。
  这里注意一点,上述语法错误是可识别的错误,所以解释器也会默认抛出一个SyntaxError异常信息反馈给程序员。所以本质上大部分错误都是可被输出打印的,只是因为错误代码不运行,也就没法处理,所以捕获错误的异常信息就变得没意义。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:读懂Python的异常机制

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址