Rumah >hujung hadapan web >tutorial js >Ralat pemantauan dan teknik pengelogan dalam JavaScript
Pemantauan dan pengelogan ralat JavaScript adalah penting untuk mengekalkan kestabilan dan prestasi aplikasi anda. Dalam artikel ini, kami akan meneroka teknik lanjutan yang boleh membantu anda memantau dan mengelog ralat dalam kod JavaScript anda dengan berkesan. Kami akan merangkumi pengendali ralat global, blok cuba/tangkap, surih tindanan, perpustakaan pengelogan, kelas ralat tersuai, pelaporan dan pemberitahuan ralat serta penjejakan ralat dalam pengeluaran.
Pengendali ralat global membolehkan anda menangkap dan mengendalikan ralat yang berlaku semasa aplikasi JavaScript anda sedang berjalan. Dengan memanfaatkan window.onerror dan window.onunhandledrejection, anda boleh log atau melaporkan ralat dan pengecualian.
window.onerror = function(message, url, line, column, error) { console.error("An error occurred:", message); console.error("URL:", url); console.error("Line:", line); console.error("Column:", column); console.error("Error object:", error); }; window.onunhandledrejection = function(event) { console.error("Unhandled promise rejection:", event.reason); };
Kod yang disediakan menetapkan pengendali ralat global dalam JavaScript. window.onerror menangkap ralat yang tidak dikendalikan dan mencatatkan mesej ralat, URL skrip, nombor baris dan lajur serta objek ralat. window.onunhandledrejection menangkap penolakan Janji yang tidak dikendalikan dan mencatatkan sebab penolakan. Pengendali ini membantu mengenal pasti dan mencatat ralat yang berlaku semasa halaman web sedang berjalan.
An error occurred: ReferenceError: someVariable is not defined URL: https://example.com/js/app.js Line: 42 Column: 15 Error object: ReferenceError: someVariable is not defined
Menggunakan blok cuba/tangkap membolehkan anda mengendalikan pengecualian tertentu dan pulih dengan anggun daripada ralat yang mungkin berlaku dalam blok kod.
Penerangan
try { // Code that might throw an error const result = someFunction(); console.log("Result:", result); } catch (error) { console.error("An error occurred:", error); }Stacktrace
An error occurred: TypeError: someFunction is not a functionPenerangan
catch block merekodkan surih tindanan ralat menggunakan sifat console.error() dan error.stack.
Output
function foo() { bar(); } function bar() { throw new Error("Something went wrong"); } try { foo(); } catch (error) { console.error("Error stack trace:", error.stack); }perpustakaan rekod
Error stack trace: Error: Something went wrong at bar (script.js:5:9) at foo (script.js:2:3) at script.js:10:3Penerangan
Melanjutkan kelas Ralat terbina dalam membolehkan anda membuat kelas ralat tersuai dengan sifat dan kaedah tambahan Ini menjadikan pengendalian ralat lebih bermaklumat dan lebih mudah.
// Using Sentry logging library Sentry.init({ dsn: 'your-sentry-dsn', // Other configuration options }); try { // Code that might throw an error } catch (error) { Sentry.captureException(error); }
Kod ini mentakrifkan kelas ralat tersuai MyCustomError yang memanjangkan Ralat. Di dalam blok cuba, ia melemparkan contoh MyCustomError dengan mesej ralat khusus dan sifat tersuai. Dalam blok tangkapan, ia log sifat tersuai objek ralat ditangkap.
class MyCustomError extends Error { constructor(message, customProperty) { super(message); this.customProperty = customProperty; } } try { throw new MyCustomError("Something went wrong.", "Custom data"); } catch (error) { console.error("Custom property:", error.customProperty); }Laporan dan Pemberitahuan Pepijat
.
Custom property: Custom dataPenerangan
Kod ini menunjukkan cara mengendalikan ralat dengan memanggil fungsi tersuai untuk menghantar pemberitahuan ralat apabila ralat berlaku dalam blok percubaan. Ia membenarkan pemberitahuan proaktif dan respons kepada ralat, membantu menyelesaikan masalah dan menyelesaikan isu dengan segera.
Pemantauan ralat dan teknik pengelogan yang berkesan adalah penting untuk mengekalkan kestabilan dan prestasi aplikasi JavaScript. Anda boleh mengesan, mendiagnosis dan menyelesaikan isu dengan lebih cekap dengan memanfaatkan pengendali ralat global, cuba/tangkap blok, surih tindanan, perpustakaan pengelogan, kelas ralat tersuai, pelaporan dan pemberitahuan ralat serta pengesanan ralat dalam pengeluaran. Ingatlah untuk mencapai keseimbangan antara butiran pengelogan dan kepekaan data, dan semak log secara berkala untuk mengekalkan dan menambah baik aplikasi anda secara proaktif.
Atas ialah kandungan terperinci Ralat pemantauan dan teknik pengelogan dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!