オブジェクトのすべてのメソッドをラップし、「try catch」ハンドラーを追加して JavaScript エラーをサーバー側に記録する、私が作成した関数についての意見を知りたいです。
window.onerror
このセキュリティ上の制限により、を使用したくありません。私のスクリプトは、CDN の別のドメインでホストされる予定です。
/*
* object: Object to be wrapped
* errorHandler: Instance of ErrorHandler Object
*/
function addLog(object, errorHandler) {
var name, method;
for (name in object) {
method = object[name];
if (typeof method === "function") {
object[name] = function(method, name) {
return function() {
try {
return method.apply(this, arguments);
} catch (ex) {
ex.message += "; method: '" + name + "'";
errorHandler.addToStack(ex.message);
throw ex;
}
};
}(method, name);
}
}
return object;
}
errorHandler.addToStack
Ajax メッセージを使用してサーバーにエラー レポートを非同期的に送信するカスタム オブジェクトのメソッドです。
アプリケーションでインスタンス化されたすべてのオブジェクトをこの関数でラップしたいのですが、次のことを確認できません。
- これは悪い習慣ですか?
- パフォーマンスの問題はありますか?
- これを行うためのより良い方法はありますか?
前もって感謝します!