如果raise
不在try
或except
子句中,而只是作为函数中的最后一个语句,那么raise
会做什么?在“try”或“except”块之外的python函数末尾“raise”
def foo(self):
try:
# some code that raises an exception
except Exception as e:
pass
# notice that the "raise" is outside
raise
这个例子打印1,但不是2所以它必须是最后一个raise
语句只是提出最后抛出的异常。
def foo():
try:
raise Exception()
except Exception as e:
pass
print 1
raise
print 2
if __name__ == '__main__':
foo()
这种类型的使用模式的任何官方文档?
请参阅http://stackoverflow.com/questions/13957829/how-to-use-raise-keyword-in-python – 2014-09-02 20:53:16
该文档是__literally__在谷歌的第一个结果。 – 2014-09-02 20:54:36
*“它必须是最后一个raise语句只是引发最后抛出的异常”* - 确实如此。 *“这种使用模式的任何官方文档?”* - 请参阅[这里](https://docs.python.org/2.7/reference/simple_stmts.html#the-raise-statement):*“如果没有表达式'raise'会重新生成当前作用域中最后一个活动的异常,如果当前作用域中没有异常处于活动状态,则会引发'TypeError'异常......“* – jonrsharpe 2014-09-02 21:24:20