2016-12-15 23 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'); 
 
}

相關問題