2016-12-15 9 views
0

javascriptでtry catchブロックを実装しようとしていますが、私のコードで何らかのエラーがスローされたときにcatchブロックに送信されないのがなぜですか?javascriptのcatchブロックに到達できない

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

私はこのコードを実行しますが、このコードを実行しようとするとエラーが発生し、catchブロックに送信する必要がありますが、catchブロックに送信されません。

I)は、(新しいエラーをスロー

を使用している場合は、

try catchブロックでは、catchブロックに送信されます。私の質問は、手動でキャッチブロックに送信しなければならない場合、try catchブロックを使用する目的は何ですか、私は自分自身のエラーを認識することができ、returnステートメントを使用して自分のコードの実行を停止する可能性があります。

iはトライcatchブロックについては行方不明です何かがあり、私が何かをしないのですか私は知らない、私はJavaScriptで

+3

部門では、JavaScriptでの例外にはなりません。結果は「無限大」になります。 –

答えて

2

10/0はInfinityを返しますが、例外は発生しません。試してみてください

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

ありがとう、私は今、なぜcatch文に入ることができないのか理解しました –

3

を教えてください、ゼロによる除算は許され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'); 
 
}

関連する問題