Rumah hujung hadapan web Soal Jawab bahagian hadapan Ralat NodeJS mengendalikan amalan terbaik

Ralat NodeJS mengendalikan amalan terbaik

May 12, 2023 am 10:35 AM

NodeJS ialah persekitaran masa jalan JavaScript sisi pelayan sumber terbuka berdasarkan I/O tak segerak dipacu peristiwa. Kecekapan dan kebolehskalaannya menjadikan NodeJS sebagai teknologi pilihan untuk banyak aplikasi web peringkat perusahaan. Walau bagaimanapun, seperti semua perisian lain, aplikasi NodeJS tidak sepenuhnya kebal terhadap ralat dan pengecualian. Untuk meningkatkan keteguhan dan kebolehpercayaan kod anda, adalah sangat penting untuk mengendalikan ralat dengan betul.

Artikel ini bertujuan untuk menyediakan beberapa amalan terbaik untuk pengendalian ralat NodeJS bagi membantu pembangun memperbaiki secara asas cara mereka mengendalikan ralat.

1. Menggunakan objek Ralat

JavaScript menyediakan objek Ralat terbina dalam, yang merupakan cara standard untuk mewakili ralat masa jalan. Dalam NodeJS, pembangun boleh mencipta objek ralat tersuai mereka sendiri berdasarkan objek Ralat untuk lebih menyesuaikan diri dengan keperluan khusus aplikasi. Berikut ialah contoh mudah:

class DatabaseConnectionError extends Error {
  constructor(msg, userFriendlyMsg) {
    super(msg);
    this.userFriendlyMsg = userFriendlyMsg;
    this.name = this.constructor.name;
    Error.captureStackTrace(this, this.constructor);
  }
}
Salin selepas log masuk

Dalam contoh ini, kami memanjangkan objek Ralat terbina dalam NodeJS dan menambah atribut userFriendlyMsg untuk memberikan maklumat ralat mesra pengguna dan membebankan pembina untuk membenarkan Menyediakan maklumat ini secara telus semasa mencipta ralat.

2. Kendalikan pengecualian tak segerak dengan anggun

Memandangkan NodeJS ialah I/O tak segerak, kaedah pengendalian pengecualiannya berbeza daripada kod segerak tradisional. Oleh itu, pengendalian pengecualian dalam kod tak segerak memerlukan mengikut beberapa peraturan yang berbeza. Berikut ialah dua cara untuk mengendalikan pengecualian tak segerak dengan anggun:

  1. Pengendalian pengecualian dalam fungsi panggil balik

Dalam NodeJS, fungsi panggil balik adalah teras penyelesaian terdorong peristiwa . Biasanya, fungsi panggil balik akan mengambil bentuk dua parameter (ralat, data), di mana parameter ralat mewakili ralat yang mungkin berlaku semasa operasi tak segerak, dan parameter data mewakili hasil operasi tak segerak.

Untuk mengendalikan pengecualian dalam fungsi panggil balik dengan anggun, kami mengesyorkan menggunakan corak panggil balik ralat pertama, iaitu, menghantar objek ralat dalam parameter pertama fungsi panggil balik. Sudah tentu, dalam beberapa kes, anda boleh menggunakan pernyataan cuba-tangkap untuk menangkap pengecualian dalam fungsi panggil balik, tetapi ini biasanya bukan amalan yang baik.

Berikut ialah contoh mudah:

function readFile(filePath, callback) {
  fs.readFile(filePath, (err, data) => {
    if (err) {
      callback(new Error(`Failed to read file: ${filePath}`));
    } else {
      callback(null, data);
    }
  });
}
Salin selepas log masuk

Dalam contoh ini, kami menyemak secara manual untuk ralat dalam fungsi panggil balik dan lulus objek ralat sebagai parameter pertama kepada panggilan balik.

  1. Pengendalian pengecualian janji

Promise ialah cara yang lebih elegan untuk mengendalikan kod tak segerak dalam JavaScript moden. Dengan Promise, pengecualian yang mungkin berlaku dalam operasi tak segerak boleh dikendalikan dengan lebih semula jadi. Berikut ialah contoh mudah:

function readFilePromise(filePath) {
  return new Promise((resolve, reject) => {
    fs.readFile(filePath, (err, data) => {
      if (err) {
        reject(new Error(`Failed to read file: ${filePath}`));
      } else {
        resolve(data);
      }
    });
  });
}
Salin selepas log masuk

Dalam contoh ini, kami menggunakan objek Promise untuk mengendalikan operasi membaca fail secara tidak segerak dan menggunakan kaedah tolak untuk menetapkan status Janji kepada "ditolak" dalam peristiwa pengecualian. Ambil perhatian bahawa setiap pautan dalam rantai pengendalian pengecualian Promise perlu memanggil kaedah tangkapan atau menggunakan kaedah Promise.allSettled() untuk memastikan tiada pengecualian diabaikan.

3. Tulis rekod log yang baik

Apabila ralat berlaku, pembalakan adalah tugas penting. Log boleh membantu kami mencari masalah dengan cepat, mencari punca ralat dan mencari penyelesaian yang sesuai.

Dalam NodeJS, pengelogan boleh menggunakan objek konsol terbina dalam, atau anda boleh menggunakan perpustakaan pengelogan pihak ketiga, seperti winston.js, bunyan, dsb.

Jika anda mempunyai berbilang kejadian NodeJS atau dijalankan pada berbilang pelayan, anda harus log ralat ke sistem pengelogan pusat seperti Elasticsearch, Graylog, Logstash, dsb.

4 Gunakan alat penyahpepijatan yang sesuai

Aplikasi pelayan yang besar seperti NodeJS boleh menjadi sangat rumit dan penyahpepijatan apabila ralat berlaku boleh menjadi rumit. Untuk menyahpepijat aplikasi NodeJS dengan lebih mudah, kami boleh menggunakan beberapa alat penyahpepijatan yang sesuai. Berikut ialah beberapa alatan penyahpepijatan yang biasa digunakan:

  1. Penyahpepijat terbina dalam Node.js

Penyahpepijat terbina dalam NodeJS ialah persekitaran REPL yang berjalan dalam proses NodeJS. Ia membantu kami dengan penyahpepijatan interaktif pada masa jalan, memeriksa pembolehubah, melaksanakan ungkapan, melangkah melalui kod dan banyak lagi.

Untuk mendayakan penyahpepijat terbina dalam NodeJS, gunakan baris arahan berikut:

node debug [app.js]
Salin selepas log masuk
  1. Alat Pembangun Chrome

Alat Pembangun Chrome ialah pembangunan web Ia adalah salah satu alat penyahpepijatan yang biasa digunakan dan juga boleh digunakan untuk menyahpepijat aplikasi NodeJS. Untuk nyahpepijat aplikasi NodeJS menggunakan Alat Pembangun Chrome, gunakan baris arahan berikut:

node --inspect[=[host:port]] [app.js]
Salin selepas log masuk

Kemudian, kita boleh membuka penyemak imbas Chrome dan melawati URL berikut:

chrome://inspect
Salin selepas log masuk

Dalam pilihan "Sasaran Jauh " , cari aplikasi NodeJS kami dan klik butang "Periksa" untuk membuka alatan pembangun.

Ringkasan

Artikel ini memperkenalkan beberapa amalan terbaik untuk pengendalian ralat NodeJS, yang boleh membantu pembangun mengurus dan menyelesaikan ralat dalam aplikasi web dengan lebih baik. Dengan menggunakan objek Ralat, mengendalikan pengecualian tak segerak dengan anggun, menulis pengelogan yang baik dan menggunakan alat nyahpepijat yang sesuai, kami boleh mencari dan menyelesaikan masalah dengan cepat, dengan itu meningkatkan kebolehpercayaan dan keteguhan aplikasi kami.

Atas ialah kandungan terperinci Ralat NodeJS mengendalikan amalan terbaik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Peranan React dalam HTML: Meningkatkan Pengalaman Pengguna Peranan React dalam HTML: Meningkatkan Pengalaman Pengguna Apr 09, 2025 am 12:11 AM

React menggabungkan JSX dan HTML untuk meningkatkan pengalaman pengguna. 1) JSX membenamkan HTML untuk menjadikan pembangunan lebih intuitif. 2) Mekanisme DOM maya mengoptimumkan prestasi dan mengurangkan operasi DOM. 3) UI pengurusan berasaskan komponen untuk meningkatkan kebolehkerjaan. 4) Pengurusan negeri dan pemprosesan acara meningkatkan interaktiviti.

Apakah batasan sistem kereaktifan Vue 2 berkenaan dengan perubahan array dan objek? Apakah batasan sistem kereaktifan Vue 2 berkenaan dengan perubahan array dan objek? Mar 25, 2025 pm 02:07 PM

Sistem Reaktiviti Vue 2 bergelut dengan tetapan indeks array langsung, pengubahsuaian panjang, dan penambahan/penghapusan harta benda objek. Pemaju boleh menggunakan kaedah mutasi Vue dan vue.set () untuk memastikan kereaktifan.

Komponen React: Membuat unsur -unsur yang boleh diguna semula di HTML Komponen React: Membuat unsur -unsur yang boleh diguna semula di HTML Apr 08, 2025 pm 05:53 PM

Komponen React boleh ditakrifkan oleh fungsi atau kelas, merangkumi logik UI dan menerima data input melalui prop. 1) Tentukan komponen: Gunakan fungsi atau kelas untuk mengembalikan elemen bertindak balas. 2) Rendering Component: React Call Render Kaedah atau Melaksanakan Komponen Fungsi. 3) Komponen multiplexing: Lulus data melalui prop untuk membina UI yang kompleks. Pendekatan kitaran hayat komponen membolehkan logik dilaksanakan pada peringkat yang berbeza, meningkatkan kecekapan pembangunan dan pemeliharaan kod.

Apakah faedah menggunakan TypeScript dengan React? Apakah faedah menggunakan TypeScript dengan React? Mar 27, 2025 pm 05:43 PM

TypeScript meningkatkan pembangunan React dengan menyediakan keselamatan jenis, meningkatkan kualiti kod, dan menawarkan sokongan IDE yang lebih baik, dengan itu mengurangkan kesilapan dan meningkatkan kebolehkerjaan.

React and the Frontend: Membina Pengalaman Interaktif React and the Frontend: Membina Pengalaman Interaktif Apr 11, 2025 am 12:02 AM

React adalah alat pilihan untuk membina pengalaman front-end interaktif. 1) React memudahkan pembangunan UI melalui komponen dan DOM maya. 2) Komponen dibahagikan kepada komponen fungsi dan komponen kelas. Komponen fungsi adalah lebih mudah dan komponen kelas menyediakan lebih banyak kaedah kitaran hayat. 3) Prinsip kerja React bergantung kepada algoritma DOM dan perdamaian maya untuk meningkatkan prestasi. 4) Pengurusan negeri menggunakan useState atau ini. Kaedah kitaran hayat seperti ComponentDidMount digunakan untuk logik tertentu. 5) Penggunaan asas termasuk membuat komponen dan pengurusan negeri, dan penggunaan lanjutan melibatkan cangkuk tersuai dan pengoptimuman prestasi. 6) Kesalahan biasa termasuk kemas kini status yang tidak betul dan isu prestasi, kemahiran debugging termasuk menggunakan reactdevtools dan sangat baik

Bagaimanakah anda boleh menggunakan UserEducer untuk Pengurusan Negeri Kompleks? Bagaimanakah anda boleh menggunakan UserEducer untuk Pengurusan Negeri Kompleks? Mar 26, 2025 pm 06:29 PM

Artikel ini menerangkan menggunakan UserEducer untuk Pengurusan Negeri Kompleks dalam React, memperincikan manfaatnya ke atas UseState dan bagaimana untuk mengintegrasikannya dengan useeffect untuk kesan sampingan.

Apakah komponen berfungsi dalam vue.js? Bilakah mereka berguna? Apakah komponen berfungsi dalam vue.js? Bilakah mereka berguna? Mar 25, 2025 pm 01:54 PM

Komponen fungsional dalam vue.js adalah cangkuk kitaran hidup, ringan, dan kekurangan kitaran, sesuai untuk memberikan data tulen dan mengoptimumkan prestasi. Mereka berbeza daripada komponen yang berkesudahan dengan tidak mempunyai keadaan atau kereaktifan, menggunakan fungsi render secara langsung, a

Bagaimana anda memastikan bahawa komponen React anda boleh diakses? Alat apa yang boleh anda gunakan? Bagaimana anda memastikan bahawa komponen React anda boleh diakses? Alat apa yang boleh anda gunakan? Mar 27, 2025 pm 05:41 PM

Artikel ini membincangkan strategi dan alat untuk memastikan komponen React boleh diakses, memberi tumpuan kepada HTML semantik, atribut ARIA, navigasi papan kekunci, dan kontras warna. Ia mengesyorkan menggunakan alat seperti ESLINT-PLUGIN-JSX-A11Y dan AXE-CORE untuk TESTI

See all articles