2016-12-15 48 views
0

我想实现在JavaScript try catch块,但我的问题是,为什么我不买下发送到catch块时,在我的代码抛出了一些错误,比如无法到达catch块中的JavaScript

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语句停止执行我的代码。

我失去的东西,有什么我缺少有关try catch块或我不知道,请让我知道

+3

被零除不会导致在JavaScript异常。它导致'Infinity'。 –

回答

2

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

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

谢谢,我现在明白了为什么我无法进入catch语句 –

3

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

+0

因此Infinity不会引发错误,对吧!!! ..谢谢 –

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'); 
 
}