通过代码实例了解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 相关文章推荐
9种python web 程序的部署方式小结
Jun 30 Python
Python 正则表达式(转义问题)
Dec 15 Python
对于Python编程中一些重用与缩减的建议
Apr 14 Python
Python中函数的参数传递与可变长参数介绍
Jun 30 Python
Python的Django框架中的URL配置与松耦合
Jul 15 Python
关于python pyqt5安装失败问题的解决方法
Aug 08 Python
Python断言assert的用法代码解析
Feb 03 Python
利用Django-environ如何区分不同环境
Aug 26 Python
python+mysql实现教务管理系统
Feb 20 Python
Python GUI学习之登录系统界面篇
Aug 21 Python
python入门之井字棋小游戏
Mar 05 Python
能让Python提速超40倍的神器Cython详解
Jun 24 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设计模式 Factory(工厂模式)
2011/06/26 PHP
php fsockopen伪造post与get方法的详解
2013/06/14 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
2013/06/17 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
thinkphp隐藏index.php/home并允许访问其他模块的实现方法
2016/10/13 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
QUnit jQuery的TDD框架
2010/11/04 Javascript
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
基于jQuery实现无缝轮播与左右点击效果
2018/05/13 jQuery
详解vue中使用protobuf踩坑记
2019/05/07 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
vue.js实现回到顶部动画效果
2019/07/31 Javascript
vue+elementUI实现图片上传功能
2019/08/20 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
说一说Python logging
2016/04/15 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
python实现大转盘抽奖效果
2019/01/22 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
TecoBuy澳大利亚:在线电子和小工具商店
2020/06/25 全球购物
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
实用的简历自我评价
2014/03/06 职场文书
医院护士工作检讨书
2014/10/26 职场文书
高中地理教学反思
2016/02/19 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
导游词之江西赣州
2019/10/15 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript