raise [Exception [, args [, traceback]]]
Exception 是异常的类型(例如,NameError)参数标准异常中任一种(具体异常类型可以看上一篇内容 ),args 是自已提供的异常参数。最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。例如:age = 150if age > 130: raise Exception('不科学!')
运行上面的代码后,程序会被终止,并触发异常,如下:Traceback (most recent call last): File "test.py", line 3, in <module> raise Exception('不科学!')Exception: 不科学!
assert的用法assert(断言)用于判断一个表达式,在表达式条件不成立,即为 false 的时候触发AssertionError异常。断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况。例如我们的代码只能在某些特定的条件下运行,可以先判断当前条件是否符合。语法:assert expression[, arguments]
使用刚才提到的raise也可以完成assert的功能if not expression: raise AssertionError(arguments)
上面两种用法是等价的,采用assert更为简洁。使用举例:1==2# 很明显,这个表达式的结果未False,但是运行上面的代码不会触发异常,程序会正常执行。assert 1==2 ,'表达式错误'# 加上assert之后,当表达式为False的时候,会触发异常。# Traceback (most recent call last):# File "test.py", line 1, in <module># assert 1==2,'表达式错误'# AssertionError:表达式错误
刚开始学习的时候这两个触发异常的方式可能较少使用,但是在阅读源码的时候经常见到。采用raise和assert可以帮助我们主动控制异常。小结本次介绍了两种主动触发异常的方式,raise与assert,在阅读源码的时候经常出现,合理的使用可以提高代码的健壮性。(图片来源网络,侵删)
0 评论