无法在javascript中访问catch块

时间:2016-12-15 13:52:58

标签: javascript try-catch-finally

我正在尝试在javascript中实现try catch块,但我的问题是为什么我的代码中抛出一些错误时没有发送到catch块,例如

 try {
                var a = 10;
                var b = 0;
                var c = a / b;
            }
            catch (ex) {
                console.log('error');
            }

我有这样的代码,现在当我尝试运行此代码时,结果应该是一个错误,应该发送到catch块但是我没有收到发送到catch块。

如果我使用

  

抛出新的错误();

在try catch块中

,然后我被发送到catch块。我的问题是如果我必须手动将它发送到catch块然后使用try catch块的目的是什么,我可以自己识别错误并且可能通过使用return语句停止执行我的代码。

我错过了什么,有什么我错过的尝试捕获块或我不知道,请让我知道

3 个答案:

答案 0 :(得分:3)

在JavaScript中,允许除以零,如果一个部分为负,则生成Infinity-Infinity。这就是为什么你永远不会到达catch区块的原因。

答案 1 :(得分:2)

10/0将返回Infinity,它不会抛出异常。试试这个

    try {                
            adddlert("Error");
   }
   catch (ex) {             
       console.log('error');
   }

答案 2 :(得分:2)

如上所述,Javascript在除以0错误时不会抛出异常。

但是如果你想抛出错误,那么像下面这样的简单辅助函数应该会有所帮助。



function myDiv(a,b) {
  var r = a / b;
  if (Number.isFinite(r)) return r;
  throw new Error('Divide Error');
}

try {
   var a = 10;
   var b = 0;
   var c = myDiv(a, b);
   console.log(c);
} catch (ex) {
   console.log('error');
}