通过代码实例了解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 datetime时间格式化去掉前导0
Jul 31 Python
Python中集合的内建函数和内建方法学习教程
Aug 19 Python
python中defaultdict的用法详解
Jun 07 Python
Python模拟登录的多种方法(四种)
Jun 01 Python
Python常见内置高效率函数用法示例
Jul 31 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
Sep 13 Python
python scatter散点图用循环分类法加图例
Mar 19 Python
python实现批量视频分帧、保存视频帧
May 31 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
Python split() 函数拆分字符串将字符串转化为列的方法
Jul 16 Python
使用Python+selenium实现第一个自动化测试脚本
Mar 17 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 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+SqlServer实现分页显示
2006/10/09 PHP
一个PHP的String类代码
2010/04/20 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
laravel 5.3 单用户登录简单实现方法
2019/10/14 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
create-react-app中添加less支持的实现
2019/11/15 Javascript
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
Python探索之Metaclass初步了解
2017/10/28 Python
简述Python2与Python3的不同点
2018/01/21 Python
详解CSS3选择器:nth-child和:nth-of-type之间的差异
2017/09/18 HTML / CSS
详解rem 适配布局
2018/10/31 HTML / CSS
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
计算机专业大学生的自我评价
2013/11/14 职场文书
信息管理员岗位职责
2013/12/01 职场文书
客户服务经理岗位职责
2014/01/29 职场文书
担保书格式及范文
2014/04/01 职场文书
三年级学生评语
2014/04/23 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
九九重阳节标语
2014/10/07 职场文书
优秀党员申报材料
2014/12/18 职场文书
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript
Python 绘制多因子柱状图
2022/05/11 Python