零基础学习python_异常处理(32-33课)
我们写完python执行的时候是不是经常会遇到报错,而且报错都是大片红字,这样给别人的感受就是你写的程序怎么老是出问题啊,这样我们还咋么混下去呢?于是乎,就有了异常处理的东东。
python的try语句有两种风格---一种是处理异常(try/except/else),一种是无论是否发生异常都将执行最后的代码(try/finally)。
try
:
<语句> #运行代码
except
<异常的名字>:
<语句> #哪个异常符合执行哪个
except
<异常的名字> as <报错的信息>:
<语句> #报错信息可以以变量形式打印
else
:
<语句> #没有异常时执行
第二种处理异常如下:
try
:
<语句>
except
<异常的名字>:
<语句>
finally
:
<语句> #退出时总是执行
try:open("test.txt",'r') #打开一个不存在的文件 except IOError: #捕捉这个异常pass #表示实现了相应的实现,但什么也不做。 第二个例子:
try
语句子句形式表如下
except
: 捕获所有异常
except
name: 只捕获特定的异常
except
name as value: 捕获异常和它的附加数据
except
(name1,name2): 捕获任何列出的异常
else
: 如果没有异常
finally
: 总是执行
常见异常:
Exception 所有异常的基类
AttributeError 特性应用或赋值失败时引发
IOError 试图打开不存在的文件时引发
IndexError 在使用序列中不存在的索引时引发
KeyError 在使用映射不存在的键时引发
NameError 在找不到名字(变量)时引发
SyntaxError 在代码为错误形式时引发
TypeError 在内建操作或者函数应用于错误类型的对象是引发
ValueError 在内建操作或者函数应用于正确类型的对象,但是该对象使用不合适的值时引发
ZeroDivisionError 在除法或者摸除操作的第二个参数为0时引发
还有一个就是主动触发异常(raise)。
raise语法格式如下:
raise [Exception [, args [, traceback]]]
语句中Exception是异常的类型(例如,NameError)参数是一个异常参数值。该参数是可选的,如果不提供,异常的参数是"None"。
最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。
格式如下:
try:raise TypeError('类型错误') except Exception as e:print(e) 举个例子:
try:for i in range(3):for i in range(3):if i == 2:raise KeyboardInterruptprint(i,j) except KeyboardInterrupt:print('退出!')
学了以上的知识点后,我们可以来看下底下这个例子:
try:f = open('test1.txt','r') #提示:打开不存在文件就出错了,此时还未打开文件,因此根本就没有f这个变量f.read() except IOError as e:print('错误:',e) except SyntaxError:pass except NameError as msg:print('错误:'+str(msg)) except:print('对的,都是你的错') else:print('读取成功') finally:f.close() #无论咋样都要关闭文件
看完之后你们觉得这个会有什么问题呢?
最后在文件关闭的时候会报错如下:
那我们怎么规避呢?思考下吧~~~~
答案如下:
try:f = open('test1.txt','r') f.read() except IOError as e:print('错误:',e) except SyntaxError:pass except NameError as msg:print('错误:'+str(msg)) except:print('对的,都是你的错') else:print('读取成功') finally:if 'f' in locals(): #如果文件对象变量存在当前局部变量符号表的话就说明打开成功了f.close()
简单吧,嘻嘻^-^
转载于:https://www.cnblogs.com/leixiaobai/p/7777583.html
零基础学习python_异常处理(32-33课)相关推荐
- 零基础学python爬虫-零基础学习python_爬虫(53课)
1.Url的格式简单介绍,如下图: 2.我们要对网站进行访问,需要用到python中的一个模块或者说一个包吧,urllib(这个在python2中是urllib+urllib2,python3将这两个 ...
- 零基础学python实战-零基础学习python_类和对象(36-40课)
今天我们开始学习面向对象的知识咯,之前我对面向对象也学的懵懵的,因为感觉知道好像又不是特别清楚,接下来我们一起来学习类和对象吧.零基础的课程我都是看小甲鱼的视频学的,没基础的可以去这个网址下载视频学习 ...
- ide 波浪线_零基础学习Python_小波浪
Python学习笔记 公众号搜索--树莓派OpenCV学舍 Python的小波浪_书写规范 在Python的IDE中经常会出现一些波浪线,还带不同颜色的.虽然看着别扭,但对于初学者的我来说也算一种善意 ...
- vs找不到dll_零基础学习Python_绝对VS相对
Python学习笔记 公众号搜索--树莓派OpenCV学舍 绝对路径VS 相对路径 今天笔者在研究某个品牌工业相机的SDK,在尝试着运行一段代码时,系统突然显示报错了.具体看下图: 明明是一段示例程序 ...
- 列表怎么有限的初始化为零_《零基础学习Android开发》第五课 类与面向对象编程1-1...
视频:<零基础学习Android开发>第五课 类与面向对象编程1-1 类的定义.成员变量.构造方法.成员方法 一.从数据与逻辑相互关系审视代码 通过前面的课程,我们不断接触Java语言的知 ...
- 零基础go还是python_零基础学习Python的经验之谈
因为薪资比较高的,所以很多人选择当一名程序员,但是关于程序的语言有很多,Python就是其中一个,那么在零基础学习或者参加Python培训时,有什么经验呢?今天小编就来给大家讲一下吧! 1.一定要弄清 ...
- [转载] Python Web开发—进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程
参考链接: 在Python中创建代理Web服务器 2 Python Web开发-进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程 [课程简介] 这是一门Python We ...
- 零基础学python 视频_全网最全Python视频教程真正零基础学习Python视频教程 490集...
Python Web开发-进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程 [课程简介] 这是一门Python Web开发进阶课程,手把手教你用Python开发完整的商业 ...
- 视频教程-MVP带你零基础学习Access数据库-Office/WPS
MVP带你零基础学习Access数据库 Office中国站长,2003--2014年连续10年微软有价值讲师.主要为企业ACCESS Office VBA应用开发及Sql server数据库开发,开发 ...
最新文章
- 硅谷风投押注计算机网络安全市场
- 中科大计算机专业跟浙江大学计算机专业相比,浙大计算机研究生近年录报比与中国科学技术大学的比较...
- 数组名和数组名取地址的区别
- STM32 基础系列教程 27 - USB_HID
- git 可视化工具_WEB开发者必备工具集
- esp32查询剩余内存_SQL 查询语句先执行 SELECT?兄弟你认真的么?
- html快照抓取,完整网页快照抓取
- 20210916:Verilog的整数类型易错点
- CentOS 中卸载 RPM 包文件
- 【NLP入门】通俗讲解Subword Models
- numpy—np.diag(v, k=0)
- arm汇编—str,mov等指令
- ug安装计算机用户名不能是汉字,win7系统下安装UG软件后打开提示计算机名不对怎么办...
- word多级目录设置和自动生成目录
- SAP官方培训课程级别和PA认证介绍
- 广义矩方法(GMM)与动态面板数据简述
- Python数据分析中 DataFrame axis=0与axis=1的理解
- 西南大学奥鹏教育计算机基础答案,9124《 计算机图像处理基础》20秋西南大学在线作业答案资料...
- java控制台输入做界面_Java控制台输入
- 大学毕业4年-回顾和总结(9)-股权投资1年,给自己一个答卷(好狗狗、皇包车、职业梦、比呀比、易途8)(创业有风险,投资需谨慎)...