通过代码实例了解Python异常本质


Posted in Python onSeptember 16, 2020

异常的本质导引问题

在实际工作中,我们遇到的问题都不是完美的,比如:你写某个模块,用户输入不一定符合你的要求:你的程序要打开某个文件,这个文件不可能存在或者打开格式不对,你要读取数据库数据,数据可能是空的;我们程序运行着,但内存或硬盘可能已经满了

软件程序运行过程中,非常可能遇到我们刚刚提出的这些问题,我们称之为:异常,英文名:Exception,译为:例外。遇到这些情况,我们的处理方法如下

如果我们要拷贝一个文件,在没有异常的情况下,我们需要考虑到各种情况

if 'd:/a.txt'这个文件存在:
  if e盘空间大于a.txt长度:
    if 文件复制一半IO流断掉:
       停止copy,输出:IO流问题!
    else:
       copyFile('d:/a.txt','e:/a.txt')
  else:
    print('e盘空间不够放a.txt!')
 else:
 print('a,txt不存在!')

这种方法,有两个坏处:逻辑代码和错误处理代码放在一起程序员本身需要考虑到例外情况较复杂,对程序员本身要求较高

python的异常机制给我们提供了方便的处理方式

try:
  copyFile('d:/a.txt','e:/a.txt')
except:
  print('文件无法拷贝')

异常机制本质

异常指程序运行过程中的非正常现象,列如:用户输入错误,除数为零,需要处理的文件不存在,数组下标越界等

所谓异常处理,就是指程序在出现异常后依然可以正确运行后续程序,而不会因为异常终止执行

python中,引进了很多用来描述和处理异常的类,称为异常类,异常类定义中包含了该异常的信息流和对异常的处理方法。下面较为完整的展示了python中内建异常类的继承层次

通过代码实例了解Python异常本质

Python中一切皆对象,异常也采用对象的方式处理,处理过程:

1. 抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象交给解释器

2. 捕获异常:解释器得到该异常后,寻找相应的代码处理该异常

解决异常问题的态度不慌张,细看信息定位错误。

百度并查看十个帖子。

与他人协商解决异常解决的关键:定位

当发生异常时,解释器会报相关异常信息,并会在控制台打印相关信息,我们只需要按照从上到下的顺序即可追溯错误发生过程

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python登录pop3邮件服务器接收邮件的方法
Apr 30 Python
Python实现二分查找算法实例
May 26 Python
python实现简单ftp客户端的方法
Jun 28 Python
Python基本语法经典教程
Mar 11 Python
python负载均衡的简单实现方法
Feb 04 Python
浅谈pycharm的xmx和xms设置方法
Dec 03 Python
Python中Numpy ndarray的使用详解
May 24 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
django 利用Q对象与F对象进行查询的实现
May 15 Python
删除pycharm鼠标右键快捷键打开项目的操作
Jan 16 Python
Python经常使用的一些内置函数
Apr 11 Python
Python使用xpath实现图片爬取
Sep 16 #Python
Python自动创建Excel并获取内容
Sep 16 #Python
python如何实时获取tcpdump输出
Sep 16 #Python
基于python实现复制文件并重命名
Sep 16 #Python
详解python程序中的多任务
Sep 16 #Python
python实现简单的tcp 文件下载
Sep 16 #Python
实现Python3数组旋转的3种算法实例
Sep 16 #Python
You might like
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
vue scroller返回页面记住滚动位置的实例代码
2018/01/29 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
详解 微信小程序开发框架(MINA)
2019/05/17 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
Python实现正整数分解质因数操作示例
2018/08/01 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
印度民族服装购物网站:BIBA
2019/08/05 全球购物
医药专业应届毕业生求职信范文
2014/01/01 职场文书
教务处干事工作总结
2015/08/14 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
《去年的树》教学反思
2016/02/18 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS