【http://msdn.microsoft.com/zh-cn/library/h37wtbc7.aspx】
这样的 finally 块的运行速度会很慢并且可能导致混乱。这是有意的吗?
一条语句(return 或 break)会导致对程序的控制离开 finally 块。如果在 try 或 catch 块中有 return 或 break 语句,这可能会产生意想不到的结果。
finally 块中的代码总是在 try 块中的代码之后运行,如果有错误的话,则在 catch 块中的代码之后运行。例如,如果在 try 块中遇到 return 语句,则在执行 return 语句之前先执行 finally 块。如果在 finally 块中有另一个 return 语句,那么将执行该语句,而不执行最初的 return 语句。若要避免这种可能会导致混淆的情况,请不要在 finally 块中使用 return 语句。
function test() {
try {
return(5); // Attempt to return 5.
} catch(e) {
print(e);
} finally {
return(10); // This gets run first, returning 10 instead of 5.
}
}
print(test()); // Prints 10, not 5.
更正此错误
-
确保不在 finally 块中使用 return 和 break 语句。
-
如果打算在 try 和 catch 块之后执行 return 或 break 语句,则将它们移到紧跟 finally 块之后的位置。
浙公网安备 33010602011771号