Saya mencoba mencari atau mencari cara untuk menampilkan di kotak peringatan semua pengecualian javascript yang tidak tertangani dalam aplikasi. Saya ingin semua ini dilakukan di sisi klien, tanpa menggunakan kode sisi server apa pun. Saya menggunakan MVC3 sebagai lingkungan.
Saya telah meneliti selama beberapa hari terakhir dan belum menemukan apa yang saya cari.
Saya menemukan 2 cara di bawah ini yang sepertinya hampir seperti yang saya cari, kecuali cara-cara ini diatur sehingga Anda harus meneruskan nama fungsi ke dalam metode kustom untuk mencetak jejak tumpukan semua pengecualian yang tidak tertangani di dalamnya fungsi spesifik. Saya mencari cara agar tidak perlu secara manual mengirimkan nama fungsi ke metode kustom yang mencetak jejak tumpukan semua pengecualian yang tidak tertangani. Saya ingin metode kustom ini hanya 'mendengarkan' untuk semua pengecualian yang tidak tertangani dalam seluruh aplikasi.
http://eriwen.com/javascript/js-stack-trace/
Juga sesuatu yang mirip dengan tautan sebelumnya:
https://github.com/eriwen/javascript-stacktrace
Berikut kode dasar dari tautan ke-2 di atas yang mencetak jejak tumpukan dari fungsi javascript yang ditentukan:
instrumentFunction: function (context, functionName, callback) {
context = context || window;
var original = context[functionName];
context[functionName] = function instrumented() {
callback.call(this, printStackTrace().slice(4));
return context[functionName]._instrumented.apply(this, arguments);
};
context[functionName]._instrumented = original;
}
function printStackTrace(options) {
options = options || {
guess: true
};
var ex = options.e || null,
guess = !! options.guess;
var p = new printStackTrace.implementation(),
result = p.run(ex);
return (guess) ? p.guessAnonymousFunctions(result) : result;
}
Jadi, untuk meringkasnya, apakah Anda semua tahu cara untuk memiliki semacam 'pendengar' untuk mendengarkan semua pengecualian javascript yang tidak tertangani dan kemudian mencetaknya ke layar dalam kotak peringatan?
Terima kasih! Jason
sumber
Jawaban:
Anda dapat melakukan ini dengan menggunakan metode window.onerror.
sumber
Anda dapat menggunakan
window.onerror
, atau (luar biasa!) Mengikat ke acara 'kesalahan' dengan benar:Jika Anda ingin melacak kesalahan JavaScript, Anda dapat mencoba Atatus . Saya bekerja di Atatus.
sumber
Sebagai tambahannya
Anda juga bisa menangkap semua error yang diaktifkan di dalam promise callback (
.then()
) yang mendengarkanunhandledrejection
peristiwasumber
window.onerror
danwindow.addEventListener("error"
, atau apakah menggunakan salah satunya sudah cukup?window.addEventListener("error"
, kirimuseCapture
disetel ketrue
untuk menangkap juga kesalahan elemen yang tidak meluap. developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/…error
acara tidak menangkap kesalahan tertentu saya.unhandledrejection
mengerti.throw new Error('tja');
tidak terjebak dalam chrome terbaru dengan pendekatan ini ...Lihat http://log4javascript.org yang didasarkan pada Log4J. Jika sebagian besar kode Anda dibungkus dalam pernyataan coba / tangkap untuk menangani pengecualian, Anda dapat menggunakan pustaka ini sebagai antarmuka umum untuk mengirim keluaran ke "kotak dialog" yang selalu tersedia atau jendela pencatatan yang dapat dilihat oleh pengguna akhir Anda. Anda bahkan dapat memiliki tombol yang menjalankan window.print () untuk mencetak konten kotak dialog ke printer atau PDF. Semoga berhasil.
sumber