python学习笔记十——异常处理
1.try:
command
except 错误类型,记录错误信息变量:
command
finally:
command
try...finally的用处是无论是否发生异常都要确保资源释放代码的执行。一般来说,如果没有发生错误,执行过try语句块之后执行finally语句块,完成整个流程。如果try语句块发生了异常,抛出了这个异常,此时就马上进入finally语句块进行资源释放处理。如下从几个细节讨论finally的特性。
1)、try中的return: 当在try语句块中含有return语句时,执行到return并不会直接返回,而是由Python忠实的再去执行finally语句块之后再执行return。(by gashero)从这里可以看出,只要程序没有突然终止,则finally中的资源释放语句一定会执行。无论发生什么异常都会执行到finally语句块中的代码。
2)、finally之后呢? 实际测试看来,finally之后,try语句块中抛出的异常并没有被处理,而是直接被抛出到try...finally语句块之外了。并且是在finally语句块执行之后继续抛出这个异常的。 所以为了更好的处理这个异常,可以使用两层嵌套try语句块。内层的try语句块使用try...finally形式,确保资源释放代码的执行。外层try语句块使用try...except形式,可以很好的识别异常形式,并且分别处理。
3)、如果希望直接finally掉呢? 有些时候在处理了finally中的资源释放之后就不再需要继续处理抛出的异常了,在这种情况下可以考虑在finally语句块中使用return语句。这样在资源释放之后直接返回,try语句块抛出的错误就不会继续向外抛出了。(by gashero)也就是节省了上面一条的外层try...except语句块了。当然,这样的后果是根本就不知道抛出过什么异常。
最后谈一条except子句需要注意的事情,就是多个except子句截获异常时,如果各个异常类之间具有继承关系,则子类应该写在前面,否则父类将会直接截获子类异常。放在后面的子类异常也就不会执行到了
2.raise 抛出异常
raise 异常类型(异常信息)
转载于:https://www.cnblogs.com/wangyongbin/p/3702731.html
python学习笔记十——异常处理相关推荐
- 【Python学习笔记】异常处理try-except
Python异常处理 我们一般使用try-except语句来进行异常处理. 使用except Exception as err可以统一捕捉所有异常,而也可以分开处理单个异常. # 分开捕捉单个异常tr ...
- python 学习笔记(十二) 文件和序列化
python 文件读写和序列化学习. ## python文件读写 `1 打开并且读取文件` f = open('openfile.txt','r') print(f.read()) f.close() ...
- Python学习笔记十 IO编程
参考教程:廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 IO编程 I ...
- python 学习笔记十九 django深入学习四 cookie,session
缓存 一个动态网站的基本权衡点就是,它是动态的. 每次用户请求一个页面,Web服务器将进行所有涵盖数据库查询到模版渲染到业务逻辑的请求,用来创建浏览者需要的页面.当程序访问量大时,耗时必然会更加明显, ...
- python学习笔记(十 三)、网络编程
最近心情有点儿浮躁,难以静下心来 Python提供了强大的网络编程支持,很多库实现了常见的网络协议以及基于这些协议的抽象层,让你能够专注于程序的逻辑,而无需关心通过线路来传输比特的问题. 1 几个网络 ...
- python学习笔记(十六)-Python多线程多进程
一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...
- 【懒懒的Python学习笔记十】
在程序运行期间遇到错误,Python会报错.Python使用被称为异常的特殊对象来管理程序运行期间发生的错误.每当发生一个错误,Python会创建一个异常对象,如果你编写了处理该异常的代码,程序将继续 ...
- python学习笔记十-文件操作
对文件操作流程 1.打开文件,得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 操作如下: 花间一壶酒,独酌无相亲. 举杯邀明月,对影成三人. 月既不解饮,影徒随我身. 暂伴月将 ...
- python学习笔记(十五) -- 枚举
枚举 枚举的作用就是定义一组 数据形式为 dict 但却又不可变的常量 比如我们定义一个类,或者定义一个dict ,类中的成员变量可以被更改,而且类又可以被实例化,dict 里面的值也可以被更改. 如 ...
- python学习笔记十五:日期时间处理笔记
#-*- coding: utf-8 -*- import datetime#给定日期向后N天的日期 def dateadd_day(days):d1 = datetime.datetime.now( ...
最新文章
- 智能车竞赛技术报告 | 节能信标组 - 华南理工大学 - 华工雨花队
- 且看微软的.Net和Sun公司的J2EE如何对垒
- hibernate 多对多(many-to-many)
- C十三:strcmp函数,比价字符串
- ASP.NET 链接 Access 数据库路径问题最终解决方案
- linux系统开发环境配置
- Collect proper diagnostic data is very important
- scrapy框架_入门Scrapy框架看这一篇文章就够了
- 继承的方式编写日向家族
- 四个角不是直角的四边形_三个角为直角的四边形一定是矩形吗?
- WannaCry深度详细分析报告 转
- Objective-c nil, Nil, NULL和NSNull的区别
- 2021年下半年《信息系统项目管理师》真题
- Django表单系统
- vue---vue+elementUI完成注册及登陆
- 关于Vs配置Opencv出现的错误“ 0x000007fefdf6a06d (KernelBase.dll) 处最可能的异常: Microsoft C++ 异常:”!!!
- VBS教程--摘自百度百科
- 把QUERY的输出结果作为数据源_小七_新浪博客
- php msg oob,MSG_OOB winsock
- 艾美智能影库服务器ip,艾美影库 篇一:艾美影库 | 精评丨性能与资源可兼得 艾美MS-200 高清影库...