0
ログに記録するために、Javascriptの例外(処理されていないものと処理されていないもの)をすべて送信しようとしています。私はwindow.onerror
documentationとalso this postを介してこの問題を明らかにしましたが、処理されない例外に対してのみ最適です。処理された(処理されていない)Javascriptエラーをサーバーに送信
window.onerror
ブロックがcatch()
ブロックですでに処理されている場合は、ブロックされません。
私のコードのcatch()
ブロックに私のlogToServer()
機能を手作業で添付するのが「痛い」方法ですが、それはもっとうまくいっています。
私は以下の少しスニペットを設定しました。
var logToServer = function logToServer() {
console.info('logToServer() called');
};
window.onerror = function(z, x, c, v, b) {
console.info(z);
console.info(x);
console.info(c);
console.info(v);
console.info(b);
// call a function to send to server
logToServer();
};
window.addEventListener('error', function(z, x, c, v, b) {
console.info(z);
// call a function to send to server
logToServer();
});
// test w/o catch-block
//console.info(err); // calls logToServer()
// test w/ catch-block
try {
console.info(asd); // does not call logToServer()
} catch (err) {
console.error(err);
};
Enable logs in console.
処理される例外については、ロジックを実行し、最後にcatchブロックから例外をスローします。 –
なぜですか?あなたが避けることのできないエラーに対処するために* try ... catch *を使うか、これらのエラーは*(そしてそのようなエラーが発生する場所が多いはずがありません)*です。あるいは、あなたは*いたずら/バグのコードを扱うためにどこでも* try .. catch *を使って、ユーザがこれらのエラーやその結果を見るのを避けます。この場合、これらのエラーをキャッチして、そのエラーを引き起こすコードを修正してください。だからもう一度、なぜあなたは手動でそのロギングを追加するのが面倒だと思うのですか?そして、なぜあなたはすでに対処されたすべてのエラーをログに記録したいのですか? – Thomas
@MuhammadQasim - すべてのcatchブロックを手動で編集し、例外がスローされたときに私のロジックを呼び出すことを意味しますか?私はそれをすることができますが、すべてのキャッチブロックを訪問することは過度のようです。将来の新しいtry catchブロックが常に私のserver-logging-logic-functionを呼び出すように常に保証することはもちろんです。他に何か意味がありましたか? – Rodiwa