Menangani error
Termasuk bagian Dasar-Dasar Node.js dalam perjalanan Node.js di Coddy. Pelajaran 16 dari 33.
File notes.json yang diedit secara manual bisa rusak. Setelah itu, JSON.parse akan menghasilkan error, dan Node mencetak stack trace: daftar panjang baris kode yang menyebabkan error.
try menjalankan kode yang mungkin menghasilkan error. Saat terjadi error, catch menerima error tersebut dan programmu menentukan apa yang akan dikatakan. err.message berisi alasan dalam satu baris.
let config;
try {
config = JSON.parse('{ port: 3000 }');
} catch (err) {
console.error(`config is broken: ${err.message}`);
process.exit(1);
}Jangan tangkap error lalu lanjutkan dengan list kosong: add berikutnya akan menyimpan data di atas file yang rusak itu, dan semua catatan di dalamnya akan hilang.
Tantangan
MudahSeseorang mengedit notes.json secara manual dan meninggalkan satu koma berlebih. Sekarang JSON.parse menghasilkan error, dan Node mencetak pelacakan tumpukan yang panjang. Buat alat ini mencetak satu baris yang jelas, lalu berhenti, agar tidak pernah menyimpan apa pun di atas file yang rusak.
- Di
store.js, cari tempat catatan dimuat:JSON.parse(readFileSync(...)), di dalam objekstore. Tangkap error yang dihasilkanJSON.parsesaat file bukan JSON yang valid.trytidak bisa diletakkan di dalam objek, jadi pindahkan pemuatan ke fungsi atau variabel di atas objek, lalu gunakan hasilnya untuknotes. - Saat penguraian gagal, cetak satu baris ke stderr, lalu keluar dengan kode 1. Baris itu dimulai dengan
notes.json is damaged:dan dilanjutkan dengan pesan error, yaitu alasan yang diberikanJSON.parse, sepertiUnexpected token ']'. Jangan cetak pelacakan tumpukan. Jangan lanjut dengan list kosong: perintahaddberikutnya akan menyimpan data di atas catatan yang rusak. - Jika
notes.jsontidak ada, hasilnya tetap berupa penyimpanan kosong, seperti sebelumnya. Pemeriksaan ini dijalankan untuk setiap perintah, karena setiap perintah memuat penyimpanan.
Coba: ketik list di kotak setelah $ node notes.js sebelum mengubah apa pun. Kamu akan melihat pelacakan tumpukan berwarna merah. Setelah perubahanmu, list hanya mencetak baris merah notes.json is damaged: ... dan kode keluar 1. Untuk melihat catatanmu lagi, hapus koma setelah "Call Ada" di notes.json, lalu jalankan list. Kemudian tambahkan kembali koma itu sebelum menekan tombol “Periksa”: pemeriksaan memerlukan file yang rusak, dan Atur ulang file tidak membatalkan perubahan yang kamu buat sendiri.
Coba sendiri
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
const file = 'notes.json';
const store = {
notes: existsSync(file) ? JSON.parse(readFileSync(file, 'utf8')) : [],
save() {
writeFileSync(file, JSON.stringify(this.notes, null, 2));
},
add(text) {
this.notes.push(text);
this.save();
return this.notes.length;
},
remove(n) {
const [text] = this.notes.splice(n - 1, 1);
this.save();
return text;
},
};
export default store;
Semua pelajaran di Dasar-Dasar Node.js
1Menjalankan JavaScript di Node
Halo, NodeMembaca PerintahArgumen Baris PerintahPerintah5Peristiwa, Input, dan Package
Dengarkan Sebelum MengirimkanPemancar PeristiwaMembaca InputLatihan sendiri: Playground Express