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;
      }
 }
此函数将运行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
     }
 }
小智 10
离开try块时,最后执行块.在你的代码中,这会在你返回false时发生.这会将返回值设置为false并尝试退出该函数.但首先它必须退出触发finally的try块并将返回值覆盖为true.
许多人认为每个函数都有一个返回语句是一个很好的编程习惯.考虑在函数的开头创建一个var retval,并在整个函数中将其设置为true或false,然后构造代码,使其正确地落到底部的单个返回.
| 归档时间: | 
 | 
| 查看次数: | 40748 次 | 
| 最近记录: |