通过代码实例了解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 字符串操作方法大全
Mar 11 Python
python+mongodb数据抓取详细介绍
Oct 25 Python
Flask 让jsonify返回的json串支持中文显示的方法
Mar 26 Python
python 从csv读数据到mysql的实例
Jun 21 Python
Django后端接收嵌套Json数据及解析详解
Jul 17 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
Aug 24 Python
python中调试或排错的五种方法示例
Sep 12 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
Dec 13 Python
pytorch 自定义卷积核进行卷积操作方式
Dec 30 Python
python3代码输出嵌套式对象实例详解
Dec 03 Python
Numpy中的数组搜索中np.where方法详细介绍
Jan 08 Python
Python接口自动化之文件上传/下载接口详解
Apr 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
一道关于php变量引用的面试题
2010/08/08 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
2012/08/31 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
jQuery大于号(>)选择器的作用解释
2015/01/13 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
微信小程序页面上下滚动效果
2020/11/18 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
Python字符转换
2008/09/06 Python
Python迭代和迭代器详解
2016/11/10 Python
win10环境下python3.5安装步骤图文教程
2017/02/03 Python
Python实现的手机号归属地相关信息查询功能示例
2017/06/08 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
Python3读取和写入excel表格数据的示例代码
2020/06/09 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
Linux内核产生并发的原因
2016/11/08 面试题
为什么要用EJB
2014/04/17 面试题
简历的自我评价范文
2014/02/04 职场文书
院领导写的就业推荐信
2014/03/09 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
2014年营销工作总结
2014/11/22 职场文书
商业计划书格式、范文
2019/03/21 职场文书
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS