异常处理try/raise/assert/with
来源:互联网 发布:雷锋的故事 知乎 编辑:程序博客网 时间:2024/05/22 14:12
try: main-actionexcept Exception1: handler1except Exception2: handler2...else: else-blockfinally: finally-block
- 这个语句中的main-action代码块会先执行,如果该程序代码引发异常,那么所有except代码块都会逐一测试,执行第一个符合引发异常的except子句下面的语句。如果没有引发异常,将会执行else-block。无论之前发生了什么,当main-action代码块完成时,而任何引发的异常都已经处理后,finally-block就会执行。即使是异常处理器或者else-block内有错误发生而引发了新的异常,finally-block内的程序代码依然会执行。
- 从语法上讲,except分句数目没有限制,但是应该只有一个else。
- 只有当main-action中没有发生异常时,else才会执行,当没有相符的except的异常发生时,则不会执行。
- finally用于定义清理动作,无论异常是否引发或受到处理,都一定会在离开try前运行。
- try -> except -> else -> finally ;其中else和finally是可选的,可能会有0个或多个except,但是,如果出现一个else的话,必须有至少一个except。
- raise语句:要显式地触发异常,可以用raise语句,其语句组成是:raise关键字,后面跟着可选的要引发的类或者类的一个实例:
raise <instance>
raise <class>
raise IndexError #Class(instance created)raise IndexError() #Instance(created in statement)
- assert语句 :assert可视为条件式的raise语句。
assert <test>,<data>
- 执行起来就像如下的代码:
if __debug__: if not <test>: raise AssertionError(<data>)
- 即如果test计算为假,python就会引发异常:data项(如果提供的话)是异常的额外数据。
def f(x): assert x < 0, 'x must be negative' return x ** 2
- with/as环境管理器
- with/as语句的设计是作为常见try/finally用法模式的替代方案。就像try/finally语句,with/as语句也是用于定义必须执行的终止或“清理”行为,无论处理步骤中是否发生异常。不过,和try/finally不同的是,with语句支持更丰富的基于对象的协议,可以为代码块定义支持进入和离开动作。
with expression [as variable]: with-block
- 这里的expression要返回一个对象,从而支持环境管理协议,如果选用的as子句存在时,此对象也可返回一个值,赋值给变量名variable。
with open(r'C:\misc\data') as myfile: for line in myfile: print(line) ...more code here...<=>myfile = open(r"C:\misc\data")try: for line in myfile: print(line) ...more code here...finally: myfile.close()
- try是捕捉,raise是触发,assert是条件触发,而with是把代码块包装在环境管理器中(定义了进入和离开的行为)。
阅读全文
0 0
- 异常处理try/raise/assert/with
- Python异常处理try...except...finally raise assert
- 异常处理try...except、raise
- Python异常处理——try...except、主动引发异常(raise)、断言(assert)
- 【python学习笔记】Python异常处理raise、try...except、断言assert
- (Python)异常处理try...except、raise
- (Python)异常处理try...except、raise
- Python异常处理try...except、raise
- Python---异常处理try...except、raise
- (Python)异常处理try...except、raise
- Python异常处理try...except、raise
- python中的异常处理try/except/finally/raise
- try块和异常处理,断言assert
- Python--小甲鱼学习笔记--第33课:异常处理(try-except, try-finally, raise)
- JDK7之try-with-resources异常处理
- Python学习笔记之错误处理(关键词:错误处理、异常机制、try、except、else、finally、raise)
- python之raise、assert、with/as环境管理器
- python 引发异常 raise()及异常处理
- java开发C语言编译器:消除冗余语句和把ifelse控制语句编译成字节码
- 微软面经
- 数字货币开发共识机制与分布式一致性算法
- 李开复:多次失败后,我总结出最优秀创业者的4个特点
- 外资撤离,为什么人民币会贬值,汇率下跌-货币总量和货币风险双重影响
- 异常处理try/raise/assert/with
- JAVA数据库连接池简介与使用(C3P0,Druid,JNDI ,DBCP,Proxool,BoneCP)
- Django后台ManyToManyField显示成Object
- bounding box回归的原理学习——yoloV1
- 发布文章时带有图片内容,去掉域名,否则更换域名后连接会失效
- kerberos 取消认证
- OpenCV编程->二维图像的平移warpAffine
- 我对Dagger2的理解
- 抽象类和接口的区别