Python程序设计之异常处理(2)

1.处理异常的两种特殊方法:
①断言:

语句格式:assert exception[,reason]
解释:当exception为真时,什么都不做,如果表达式为假就抛出异常;
注意:assert一般用于对某个时刻必须满足的条件进行验证,__debug__为真时有效,当Python脚本以-O选项编译时,assert语句将被移除来提高效率。

②上下文管理:

语句格式:with context_expr[as var]: with 块
解释:上下文管理,with语句可以实现自动管理资源,在代码块执行完毕后自动还原进入该代码块之前的现场或上下文;
注意:不论何时跳出with块,也不论是否发生异常,总能保证资源被释放!

2.断言:

案例:

try:
    assert 1==2,'1 is not equal 2!'
except AssertionError as reason:
    print('%s:%s'%(reason.__class__.__name__,reason))

输出结果:

AssertionError:1 is not equal 2!
3.上下文管理

案例:

with open('1.txt','r+') as f:
    for line in f:
        print(line)
4.使用使用sys模块回溯最后的异常

sys.exc_info() #返回一个三元组(type(异常类型),value/message(表示异常信息或者参数),traceback(包含调用栈信息的对象))
注意:相对于标准异常处理机制,可以直接定位最终引发异常的原因,但难以直接确定引发异常的位置

#使用sys回溯最近的一次异常
import sys
#try:
#    block
#except:
#    t=sys.exc_info()    #返回一个三元组(type(异常类型),value/message(表示异常信息或者参数),traceback(包含调用栈信息的对象))
#    print(t)
try:
    1/0
except:
    r=sys.exc_info()    #相对于标准异常处理机制,可以直接定位最终引发异常的原因,但难以直接确定引发异常的位置
    print(r)
学习笔记

1.断言语句assert一般用于对程序某个时刻必须满足的条件的验证;
2.上下文管理语句with在代码执行完毕后能够自动还原进入代码之前的现场或上下文,不论是否发生异常总能保证验证资源被正确释放。

发布了78 篇原创文章 · 获赞 83 · 访问量 5405

猜你喜欢

转载自blog.csdn.net/qxyloveyy/article/details/104672873