我们写完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课)相关推荐

  1. 零基础学python爬虫-零基础学习python_爬虫(53课)

    1.Url的格式简单介绍,如下图: 2.我们要对网站进行访问,需要用到python中的一个模块或者说一个包吧,urllib(这个在python2中是urllib+urllib2,python3将这两个 ...

  2. 零基础学python实战-零基础学习python_类和对象(36-40课)

    今天我们开始学习面向对象的知识咯,之前我对面向对象也学的懵懵的,因为感觉知道好像又不是特别清楚,接下来我们一起来学习类和对象吧.零基础的课程我都是看小甲鱼的视频学的,没基础的可以去这个网址下载视频学习 ...

  3. ide 波浪线_零基础学习Python_小波浪

    Python学习笔记 公众号搜索--树莓派OpenCV学舍 Python的小波浪_书写规范 在Python的IDE中经常会出现一些波浪线,还带不同颜色的.虽然看着别扭,但对于初学者的我来说也算一种善意 ...

  4. vs找不到dll_零基础学习Python_绝对VS相对

    Python学习笔记 公众号搜索--树莓派OpenCV学舍 绝对路径VS 相对路径 今天笔者在研究某个品牌工业相机的SDK,在尝试着运行一段代码时,系统突然显示报错了.具体看下图: 明明是一段示例程序 ...

  5. 列表怎么有限的初始化为零_《零基础学习Android开发》第五课 类与面向对象编程1-1...

    视频:<零基础学习Android开发>第五课 类与面向对象编程1-1 类的定义.成员变量.构造方法.成员方法 一.从数据与逻辑相互关系审视代码 通过前面的课程,我们不断接触Java语言的知 ...

  6. 零基础go还是python_零基础学习Python的经验之谈

    因为薪资比较高的,所以很多人选择当一名程序员,但是关于程序的语言有很多,Python就是其中一个,那么在零基础学习或者参加Python培训时,有什么经验呢?今天小编就来给大家讲一下吧! 1.一定要弄清 ...

  7. [转载] Python Web开发—进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程

    参考链接: 在Python中创建代理Web服务器 2 Python Web开发-进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程 [课程简介] 这是一门Python We ...

  8. 零基础学python 视频_全网最全Python视频教程真正零基础学习Python视频教程 490集...

    Python Web开发-进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程 [课程简介] 这是一门Python Web开发进阶课程,手把手教你用Python开发完整的商业 ...

  9. 视频教程-MVP带你零基础学习Access数据库-Office/WPS

    MVP带你零基础学习Access数据库 Office中国站长,2003--2014年连续10年微软有价值讲师.主要为企业ACCESS Office VBA应用开发及Sql server数据库开发,开发 ...

最新文章

  1. 硅谷风投押注计算机网络安全市场
  2. 中科大计算机专业跟浙江大学计算机专业相比,浙大计算机研究生近年录报比与中国科学技术大学的比较...
  3. 数组名和数组名取地址的区别
  4. STM32 基础系列教程 27 - USB_HID
  5. git 可视化工具_WEB开发者必备工具集
  6. esp32查询剩余内存_SQL 查询语句先执行 SELECT?兄弟你认真的么?
  7. html快照抓取,完整网页快照抓取
  8. 20210916:Verilog的整数类型易错点
  9. CentOS 中卸载 RPM 包文件
  10. 【NLP入门】通俗讲解Subword Models
  11. numpy—np.diag(v, k=0)
  12. arm汇编—str,mov等指令
  13. ug安装计算机用户名不能是汉字,win7系统下安装UG软件后打开提示计算机名不对怎么办...
  14. word多级目录设置和自动生成目录
  15. SAP官方培训课程级别和PA认证介绍
  16. 广义矩方法(GMM)与动态面板数据简述
  17. Python数据分析中 DataFrame axis=0与axis=1的理解
  18. 西南大学奥鹏教育计算机基础答案,9124《 计算机图像处理基础》20秋西南大学在线作业答案资料...
  19. java控制台输入做界面_Java控制台输入
  20. 大学毕业4年-回顾和总结(9)-股权投资1年,给自己一个答卷(好狗狗、皇包车、职业梦、比呀比、易途8)(创业有风险,投资需谨慎)...

热门文章

  1. 2022-2028年中国钢铁智能制造产业竞争现状及发展趋势分析报告
  2. 2021-2027年中国视频监控设备行业市场需求预测与投资战略规划分析报告
  3. RabbitMQ 入门系列(1)— Ubuntu 安装 RabbitMQ 及配置
  4. McCabe度量法计算程序的环路复杂性
  5. 前端Vue学习之路(四)axios请求数据
  6. 每个人都应该有一个梦想
  7. 文化内涵和历史深度:PC
  8. 【C#】集合_哈希表_字典_泛型_文件
  9. LeetCode简单题之解码字母到整数映射
  10. 大三Java后端暑期实习面经总结——Java多线程并发篇