通过代码实例了解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字典排序实例详解
May 20 Python
Python使用multiprocessing创建进程的方法
Jun 04 Python
Python学习笔记整理3之输入输出、python eval函数
Dec 14 Python
Tensorflow实现卷积神经网络的详细代码
May 24 Python
Python将文本去空格并保存到txt文件中的实例
Jul 24 Python
python paramiko利用sftp上传目录到远程的实例
Jan 03 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
python实现简单聊天室功能 可以私聊
Jul 12 Python
python3.7 的新特性详解
Jul 25 Python
Python对列表的操作知识点详解
Aug 20 Python
三个python爬虫项目实例代码
Dec 28 Python
详谈tensorflow gfile文件的用法
Feb 05 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
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
PHP 读取和编写 XML
2014/11/19 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
JavaScript事件列表解说
2006/12/22 Javascript
用js做一个小游戏平台 (一)
2009/12/29 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
jQuery如何取id有.的值一般的方法是取不到的
2014/04/18 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
理解javascript闭包
2015/12/15 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
Bootstrap字体图标无法正常显示的解决方法
2016/10/08 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
2019/02/02 Javascript
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
JS计算斐波拉切代码实例
2019/09/12 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
Python Nose框架编写测试用例方法
2017/10/26 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
享受加州生活方式的时尚舒适:XCVI
2018/07/09 全球购物
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
“学雷锋活动月”总结
2014/03/09 职场文书
2014年圣诞节促销方案
2014/03/14 职场文书
研修心得体会
2014/09/04 职场文书
2014七年级班主任工作总结
2014/12/05 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
药店收银员岗位职责
2015/04/07 职场文书
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript