我怀疑我正在finally
错误地使用该块,而且我不了解其目的的基本原理......
function myFunc() { try { if (true) { throw "An error"; } } catch (e) { alert (e); return false; } finally { return true; } }
此函数将运行catch
块,警告"一个错误",但然后返回true.为什么不返回虚假?
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 } }
离开try块时,最后执行块.在你的代码中,这会在你返回false时发生.这会将返回值设置为false并尝试退出该函数.但首先它必须退出触发finally的try块并将返回值覆盖为true.
许多人认为每个函数都有一个返回语句是一个很好的编程习惯.考虑在函数的开头创建一个var retval,并在整个函数中将其设置为true或false,然后构造代码,使其正确地落到底部的单个返回.