通过代码实例了解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中声明只包含一个元素的元组数据方法
Aug 25 Python
Python中类型关系和继承关系实例详解
May 25 Python
Python标准库之itertools库的使用方法
Sep 07 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
Python使用requests发送POST请求实例代码
Jan 25 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
Jun 28 Python
Django 开发调试工具 Django-debug-toolbar使用详解
Jul 23 Python
Python提取PDF内容的方法(文本、图像、线条等)
Sep 25 Python
numpy:找到指定元素的索引示例
Nov 26 Python
Python Tensor FLow简单使用方法实例详解
Jan 14 Python
Python如何向SQLServer存储二进制图片
Jun 08 Python
python 实现的截屏工具
May 08 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中使用gettext来支持多语言的方法
2011/05/02 PHP
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
js实现常用排序算法
2016/08/09 Javascript
Javascript自定义事件详解
2017/01/13 Javascript
JavaScript调试的多个必备小Tips
2017/01/15 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
2018/01/08 Javascript
JavaScript获取页面元素的常用方法详解
2019/09/28 Javascript
Python提取网页中超链接的方法
2016/09/18 Python
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
解决python有时候import不了当前的包问题
2019/08/28 Python
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
计算机专业推荐信范文
2013/11/20 职场文书
升旗仪式演讲稿
2014/05/08 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
党建工作目标管理责任书
2015/01/29 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
教你使用Pandas直接核算Excel中快递费用
2021/05/12 Python
python调试工具Birdseye的使用教程
2021/05/25 Python
解决sql server 数据库,sa用户被锁定的问题
2021/06/11 SQL Server
redis的list数据类型相关命令介绍及使用
2022/01/18 Redis
MySQL索引 高效获取数据的数据结构
2022/05/02 MySQL