2017-12-15 10 views
0

私は、JavaScriptで関数を実行し、その関数を実行する際にエラーがあった場合にプログラムが無視する方法があるかどうか疑問に思っていましたか?JavaScript(NodeJS)コマンド/関数を実行してエラーが発生してもプログラムを続けることはできますか?

player.play('./sounds/throughQueue.mp3', function(err){ 
            if (err) throw err 
            }) 

"throw err"を除いて、これとほとんど同じです。

プログラムはそのまま続行する必要があります。

あなたの答えを楽しみにしています。

+0

uhm ...はい?何故なの? –

+2

あなたが聞いていることは完全には分かっていませんが、 'try {someFunction()} catch(err){/ *何もしない* /}'はやりませんか? – CRice

+1

try catchは非同期にスローされたエラーを捕捉しません。 –

答えて

0

コメントに記載されているように、非同期関数のエラーを処理する方法を知りたい場合は、 あなたはこのような何かを行うことができます:

function myAsyncFunction(){ 
    return new Promise((resolve, reject) => { 
    // do some async anction that returns error 
    foo.asyncCall((err, item) => err && reject(err)) 
    } 
} 

myAsyncFunction().catch(e => console.error(e)) 

あなたは非同期エラー上記のコードは2つのスタイルで処理された観察した場合:

  1. コールバック関数は、通常、エラーを返す第一引数を持って、あなたはif (err)を行うと、いずれかを追加することができますあなたがそこで欲しいロジック。それとも無視してください。
  2. Promiseの中では、コンストラクタの第2引数であるrejectを使用できます。エラーを拒否した場合は、Promise.catchメソッドを使用して、新しいプロミスコールまたは関数コールバックのいずれかのカスタムロジックを使用できます。

あなたはただそこに何もしない可能性があり、それは無視されます私は、コールバック関数内console.errorを使用注、(あなたのプログラムが継続されます)

0

はい、あなたは/コールバック/約束のエラーを無視したりしてみてください飲み込むことができますキャッチされたエラーをキャッチしますが、それは実行を続行させるだけで、動作または結果の正しさを作成することはできません。コールバック関数の場合

  1. は、あなたは、どちらかを壊さないであろう、空のエラー処理と実行して、エラーを無視することができますが、動作はまだ呼び出しに誤りがあった場合に依存しています。
  2. 約束していれば、キャッチしたエラーを無視することもできます。
  3. async/awaitの方法では、呼び出しをキャッチして捕捉し、キャッチされたエラーを飲み込む必要があります。

つまり、考えられるエラーを処理することをお勧めします。結局のところ、品質のソフトウェアは私たちが望むものです。最終的には何が起きるかが分かります。

関連する問題