Python异常处理:单独一个raise

阅读开源代码时,经常能看到,单独一个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 # 
except IOError:
    print "outter exception"

结果:

inner exception
outter exception

首先被内层IOError异常捕获,打印“inner exception”, 然后把相同的异常再抛出,被外层的except捕获,打印"outter exception"

你可能感兴趣的:(Python异常处理:单独一个raise)