2016-09-19 10 views
1

データベースの種類にかかわらず、アプリケーションをクラッシュさせずにdbエラーを処理する最良の方法を明確に把握することはできません。ノード - クラッシュすることなくdbエラーを処理する

e.g connecting with sql 

pool.getConnection(function(err, connection) { 
    if (err) { 
    throw err 
    } 

    connection.execute('select * ...' , values, function(err, result) { 
    if (err) { 
    throw err; 
    } 
}); 

}); 

上記のどちらの場合でも、私はノードサーバーがクラッシュする原因となるエラーを投げます。 私はエラーを登録し、最もエレガントな方法でリクエストに応答したいと思います。誰かが正しい方向を指すことができますか?

答えて

1

エラーを投げているときに、誰かがそれらを捕らえる必要があります。あなたのコード内のどこにでもキャッチしないと、プログラムが壊れてしまいます。

基本的にあなたがする必要があるのは、try/catchを使って関数に呼び出しをラップし、その関数をキャッチログして要求者に返事を返す場合です。以下のような

何か:

try { 
pool.getConnection(function(err, connection) { 
    if (err) { 
    throw err 
    } 

    connection.execute('select * ...' , values, function(err, result) { 
    if (err) { 
    throw err; 
    } 
}); 
}); 
} catch (error) { 
    log(error); 
    res.status(500).body("failed to get ... " + err).send(); 
} 

は私もthis blog postを読んでお勧めしますが、これだけの作品は、同期のjavascriptを想定していることを受け

+0

ノートについての良い説明があります。疑問は、try/catch(あなたが明示的にリンクしたサイトは ''このパターンはうまくいきません! '')で動作しない非同期jを扱います。 – tcooc

+0

このように非同期例外をキャッチできないため、これは機能しません。 – jfriend00

関連する問題