Rumah >hujung hadapan web >tutorial js >Ralat pemantauan dan teknik pengelogan dalam JavaScript

Ralat pemantauan dan teknik pengelogan dalam JavaScript

WBOY
WBOYke hadapan
2023-09-12 14:13:071367semak imbas

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

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.

Contoh

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);
};

Penerangan

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.

Output

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

Cuba/Tangkap Blok

Menggunakan blok cuba/tangkap membolehkan anda mengendalikan pengecualian tertentu dan pulih dengan anggun daripada ralat yang mungkin berlaku dalam blok kod.

Penerangan

Kod yang disediakan menggunakan blok cuba/tangkap untuk mengendalikan kemungkinan ralat dalam JavaScript. Blok cuba mengandungi kod yang mungkin menimbulkan ralat, dan jika ralat berlaku, blok tangkapan dilaksanakan, yang merekodkan mesej ralat menggunakan console.error().

Output

try {
   // Code that might throw an error
   const result = someFunction();
   console.log("Result:", result);
} catch (error) {
   console.error("An error occurred:", error);
}

Stacktrace

Surih tindanan memberikan maklumat berharga tentang jujukan panggilan fungsi yang menyebabkan ralat. Mereka membantu memahami sumber ralat dan mendiagnosis masalah dengan cekap.

Contoh

An error occurred: TypeError: someFunction is not a function

Penerangan

Kod mentakrifkan dua fungsi: foo() dan bar(). Apabila foo() dipanggil, ia memanggil bar(), yang sengaja membuang ralat menggunakan throw new Error().

Kod terkandung dalam blok cuba/tangkap. Apabila ralat dilemparkan ke dalam blok cuba, blok tangkapan menangkap ralat dan menyimpan objek ralat dalam pembolehubah ralat.

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

Logging perpustakaan seperti Sentry, Rollbar dan LogRocket menyediakan keupayaan pemantauan ralat lanjutan. Mereka memudahkan penjejakan ralat, pengagregatan dan pelaporan, dan selalunya menyediakan penyepaduan dengan rangka kerja dan perkhidmatan.

Contoh

Error stack trace: Error: Something went wrong
   at bar (script.js:5:9)
   at foo (script.js:2:3)
   at script.js:10:3

Penerangan

Kod ini memulakan pustaka log Sentry dan menyediakan tangkapan ralat. Dalam blok cuba, anda boleh meletakkan kod yang mungkin membuang ralat Jika ralat berlaku, blok tangkapan menggunakan Sentry.captureException() untuk menghantar ralat kepada Sentry untuk rakaman dan analisis.

Kelas ralat tersuai

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);
}

Penerangan

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.

Output

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

Sepadukan sistem pemantauan ralat anda dengan perkhidmatan pemberitahuan seperti e-mel atau platform sembang untuk menerima makluman masa nyata apabila ralat kritikal berlaku

.

Custom property: Custom data

Penerangan

Kod ini mentakrifkan fungsi sendErrorNotification() yang menerima parameter ralat dan mengandungi logik untuk menghantar pemberitahuan ralat, seperti melalui e-mel atau sembang.

Dalam blok percubaan anda boleh meletakkan kod yang mungkin menimbulkan ralat. Jika ralat berlaku, blok tangkapan dilaksanakan dan fungsi sendErrorNotification() dipanggil dengan objek ralat sebagai parameter untuk mencetuskan proses pemberitahuan ralat.

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.

KESIMPULAN

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam