阅读开源代码时,经常能看到,单独一个raise的使用,比如
try:
do something
except IOError:
raise
这个是把最近一次产生的异常重新抛出来,交给上层处理。(我已经知道这个异常发生并且捕获到了,但是我不做处理,而由我的上层调用处理。)
https://docs.python.org/2/library/sys.html?highlight=sys#module-sys
If the current stack frame is not handling an exception, the information is taken from the calling stack frame, or its caller, and so on until a stack frame is found that is handling an exception.
举例:
try:
try:
raise IOError
except IOError:
print "inner exception"
raise # <same as raise IOError>
except IOError:
print "outter exception"
结果:
inner exception
outter exception
首先被内层IOError异常捕获,打印“inner exception”, 然后把相同的异常再抛出,被外层的except捕获,打印"outter exception"