Kata pengantar
Ada banyak jenis kesalahan yang mungkin terjadi di aplikasi Node.js. Misalnya: Ketika kesalahan sintaks atau kesalahan runtime terjadi, kesalahan JavaScript akan dipicu; Saat mencoba mengakses file yang tidak ada atau tidak diakses, kesalahan sistem akan dipicu; Selain kesalahan JavaScript dan kesalahan kesalahan sistem, pengguna juga dapat menyesuaikan kesalahan.
1. Kesalahan klasifikasi
Node.js adalah platform runtime JavaScript, dan kesalahan aplikasinya semuanya merupakan instance Error atau instance subclass Error .
Di aplikasi Node.js, ada empat kemungkinan kesalahan:
1. Kesalahan JavaScript Standar, seperti:
<EvalError> : dilempar saat eval() panggilan gagal
<SyntaxError> : dilemparkan saat menggunakan sintaks JavaScript ilegal
<RangeError> : dilemparkan saat nilai tidak dalam kisaran yang ditentukan
<ReferenceError> : dilemparkan saat variabel yang tidak ditentukan digunakan
<TypeError> : Saat melewati parameter tipe kesalahan
<URIError> : dilemparkan saat fungsi URI global digunakan secara tidak benar
2. Kesalahan sistem. Jenis kesalahan ini dipicu oleh sistem yang mendasarinya, seperti mencoba membuka file yang tidak ada, mencoba mengirim data melalui soket tertutup, dll.
3. Kesalahan khusus, kesalahan tersebut dipicu oleh pengguna dalam kode aplikasi.
4. Kesalahan pernyataan. Ketika kode melanggar logika hukum, jenis kesalahan ini dipicu oleh modul assert Node.js.
2. Kesalahan JavaScript dan Kesalahan Sistem
2.1 Kesalahan JavaScript dan Kesalahan Kustom
Kesalahan JavaScript standar disediakan oleh bahasa JavaScript, menunjukkan kesalahan sintaks atau penggunaan API yang tidak tepat. Semua kesalahan adalah instance dari kelas Error , sedangkan kesalahan JavaScript standar dibangun oleh bahasa itu sendiri ketika kesalahan terjadi.
Saat menyesuaikan kesalahan, gunakan konstruktor untuk membuat instance:
> Lempar kesalahan baru ('Terjadi kesalahan, ini adalah pesan kesalahan'); Kesalahan: Pesan kesalahan ditemukan di repl: 1: 7 di replserver.defaulteval (repl.js: 248: 27) di Bound (domain.js: 280: 14) di Replserver.runbound [sebagai eval] (domain.js: 293: 12) at replserver. di emitone (events.js: 82: 20) di replserver.emit (events.js: 169: 7) di Replserver.interface._online (readline.js: 210: 10) di replserver.interface._line (readline.js: 549: 8) di replserver.interface.intline (readline.js: 549: 8) at replserver.interface.interface. Seperti di atas, kami menyesuaikan kesalahan dan melemparkan kesalahan menggunakan kata kunci Throw. Dalam objek kesalahan ini, itu termasuk message kesalahan dan stack informasi tumpukan kesalahan. Setelah pengecualian, informasi ini dapat diakses melalui dua properti berikut:
1. error.message - Pesan Kesalahan
2. error.stack - Informasi Jejak Tumpukan Kesalahan
Selain properti dari instance kesalahan itu sendiri, Anda juga dapat menyesuaikan beberapa properti kesalahan. Misalnya, sesuaikan status properti yang mewakili status:
var error = kesalahan baru ('Halaman yang Anda kunjungi tidak ada'); error.status = 404;2.2 Kesalahan Sistem
Kesalahan sistem adalah perpanjangan dari objek Error kesalahan JavaScript, yang mewakili kesalahan operasional yang dapat ditangani oleh program, dan pesan kesalahan ini dihasilkan pada level sistem. Selain atribut dalam instance Error , instance kesalahan sistem juga mencakup atribut berikut:
1. error.syscall - String yang mewakili informasi panggilan sistem yang gagal
2. error.errno - kode kesalahan integer
3. error.code - mewakili string kesalahan, biasanya dimulai dengan huruf kapital e
3. Pengecualian
Node.js mengadopsi basis pemrograman yang digerakkan oleh peristiwa dan asinkron, yang berarti bahwa try / catch tidak dapat menangkap kesalahan yang terjadi ketika memproses secara tidak sinkron. Untuk kasus ini, kita dapat menggunakan dua cara berikut untuk menangkap atau melewati kesalahan:
Pengambilan Pengecualian di Node.js Fungsi Callback
Node.js memiliki banyak API asinkron, yang kemudian diproses melalui panggilan balik fungsi panggilan balik. Jika kesalahan terjadi, objek Error biasanya akan dimasukkan dalam parameter pertama fungsi callback ; Jika tidak ada kesalahan yang terjadi, parameter pertama adalah null . menyukai:
const fs = membutuhkan ('fs'); fs.readfile ('file yang tidak ada', (err, data) => {if (err) {console.error ('baca kesalahan file', err); return;} // pemrosesan lain});Penanganan kesalahan berbasis peristiwa
Jika objek adalah EventEmitter , kesalahan dapat ditangkap dan ditangani melalui的'error' objek:
const net = membutuhkan ('net'); const connection = net.connect ('localhost'); // Tambahkan pawang 'kesalahan' ke stream: connection.on ('error', (err) => {// jika koneksi disetel ulang oleh server atau tidak dapat terhubung ke server yang ditentukan // atau kesalahan koneksi lainnya, kesalahan akan dilewati di sini ke console.error) (error) (kesalahan).Meringkaskan
Di atas adalah ringkasan dari beberapa jenis kesalahan di node.js. Jika Anda dapat memahami jenis kesalahan di Node.js, Anda dapat membantu kami menangani kesalahan dan tangkapan pengecualian dengan lebih baik. Saya berharap konten artikel ini akan membantu semua orang.