通过代码实例了解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基础入门之seed()方法的使用
May 15 Python
Python读大数据txt
Mar 28 Python
Python中的字符串替换操作示例
Jun 27 Python
python 网络编程常用代码段
Aug 28 Python
对python .txt文件读取及数据处理方法总结
Apr 23 Python
如何使用Python 打印各种三角形
Jun 28 Python
Django 实现图片上传和显示过程详解
Jul 18 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
Python如何把多个PDF文件合并代码实例
Feb 13 Python
Python模拟伯努利试验和二项分布代码实例
May 27 Python
CocosCreator ScrollView优化系列之分帧加载
Apr 14 Python
Python中三种花式打印的示例详解
Mar 19 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
实用函数3
2007/11/08 PHP
PHP伪静态页面函数附使用方法
2008/06/20 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
2016/09/09 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
JavaScript更改class和id的方法
2008/10/10 Javascript
最佳JS代码编写的14条技巧
2011/01/09 Javascript
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
JavaScript常用验证函数实例汇总
2014/11/25 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
jQuery实现手机上输入后隐藏键盘功能
2017/01/04 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
jQuery鼠标悬停内容动画切换效果
2017/04/27 jQuery
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
vue 实现滚动到底部翻页效果(pc端)
2019/07/31 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
Python学习之asyncore模块用法实例教程
2014/09/29 Python
利用Python演示数型数据结构的教程
2015/04/03 Python
python中defaultdict的用法详解
2017/06/07 Python
python实现邮件自动发送
2019/08/10 Python
使用python切片实现二维数组复制示例
2019/11/26 Python
python关闭占用端口方式
2019/12/17 Python
Python自动化操作实现图例绘制
2020/07/09 Python
小摄影师教学反思
2014/04/27 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python