通过代码实例了解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类参数self使用示例
Feb 17 Python
Python的Bottle框架的一些使用技巧介绍
Apr 08 Python
Python字符串替换实例分析
May 11 Python
在Python操作时间和日期之asctime()方法的使用
May 22 Python
python 网络爬虫初级实现代码
Feb 27 Python
Centos部署django服务nginx+uwsgi的方法
Jan 02 Python
详解如何管理多个Python版本和虚拟环境
May 10 Python
Python 类属性与实例属性,类对象与实例对象用法分析
Sep 20 Python
django 简单实现登录验证给你
Nov 06 Python
Python将列表中的元素转化为数字并排序的示例
Dec 25 Python
Python Selenium安装及环境配置的实现
Mar 17 Python
Python+PyQt5+MySQL实现天气管理系统
Jun 16 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向浏览器输出内容的4个函数总结
2014/11/17 PHP
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
详解AngularJS实现表单验证
2015/12/10 Javascript
Jquery和JS获取ul中li标签的实现方法
2016/06/02 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
2016/06/13 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
微信小程序 toast 详解及实例代码
2016/11/09 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
2017/03/06 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
[01:03:36]Ti4 循环赛第三日DK vs Titan
2014/07/12 DOTA
python web框架学习笔记
2016/05/03 Python
python实现图书管理系统
2018/03/12 Python
python学习基础之循环import及import过程
2018/04/22 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
2018/05/08 Python
python实现事件驱动
2018/11/21 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
python 实现"神经衰弱"翻牌游戏
2020/11/09 Python
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
自我推荐信范文
2014/05/09 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
先进集体申报材料
2014/12/25 职场文书
阿甘正传观后感
2015/06/01 职场文书
婚宴主持词
2015/06/30 职场文书
联村联户简报
2015/07/21 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis