语句格式:assert exception[,reason]
解释:当exception为真时,什么都不做,如果表达式为假就抛出异常;
注意:assert一般用于对某个时刻必须满足的条件进行验证,__debug__为真时有效,当Python脚本以-O选项编译时,assert语句将被移除来提高效率。
语句格式:with context_expr[as var]: with 块
解释:上下文管理,with语句可以实现自动管理资源,在代码块执行完毕后自动还原进入该代码块之前的现场或上下文;
注意:不论何时跳出with块,也不论是否发生异常,总能保证资源被释放!
案例:
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!
案例:
with open('1.txt','r+') as f:
for line in f:
print(line)
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在代码执行完毕后能够自动还原进入代码之前的现场或上下文,不论是否发生异常总能保证验证资源被正确释放。