nic*_*ckf 55 javascript error-handling finally
我怀疑我正在finally错误地使用该块,而且我不了解其目的的基本原理......
function myFunc() {
try {
if (true) {
throw "An error";
}
} catch (e) {
alert (e);
return false;
} finally {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
此函数将运行catch块,警告"一个错误",但然后返回true.为什么不返回虚假?
Gil*_*ean 83
finally块包含在try和catch块执行之后但在try ... catch语句之后的语句之前执行的语句.finally块执行是否抛出异常.如果抛出异常,即使没有catch块处理异常,finally块中的语句也会执行.更多
该finally块将始终运行,尝试true在try块后返回
function myFunc() {
try {
if (true) {
throw "An error";
}
return true;
} catch (e) {
alert (e);
return false;
} finally {
//do cleanup, etc here
}
}
Run Code Online (Sandbox Code Playgroud)
小智 10
离开try块时,最后执行块.在你的代码中,这会在你返回false时发生.这会将返回值设置为false并尝试退出该函数.但首先它必须退出触发finally的try块并将返回值覆盖为true.
许多人认为每个函数都有一个返回语句是一个很好的编程习惯.考虑在函数的开头创建一个var retval,并在整个函数中将其设置为true或false,然后构造代码,使其正确地落到底部的单个返回.