Kesalahan pemrograman tidak bisa dihindari. Cepat atau lambat, aplikasi Anda akan mengalami beberapa perilaku yang tidak terduga. Seperti bahasa pemrograman lainnya, JavaScript menimbulkan kesalahan ketika ada yang tidak beres dalam kode Anda.

Kesalahan mengganggu aliran normal aplikasi. Tetapi mereka juga membantu melindungi aplikasi Anda dari perilaku yang tidak terduga. Mengetahui bagaimana menangani kesalahan dengan benar sangat penting.

Mengapa Penanganan Kesalahan Penting?

Penanganan kesalahan berkontribusi pada peningkatan pengalaman pengguna. Anda dapat menukar kesalahan default JavaScript dan terkadang verbose dengan lebih banyak pesan kesalahan yang dapat dibaca manusia. Anda dapat dengan anggun menangani penyebab beberapa kesalahan dan menjaga program Anda tetap berjalan daripada menghentikannya.

Penanganan kesalahan juga membantu selama pengembangan. Anda dapat menangkap kesalahan runtime dan melakukan sesuatu yang berguna dengannya, seperti login ke konsol browser. Ini lebih anggun daripada kesalahan yang menyebabkan crash dan tidak tahu di mana atau mengapa kesalahan itu terjadi.

instagram viewer

Struktur Kesalahan Bawaan JavaScript

Kesalahan JavaScript adalah objek dengan tiga properti:

  • nama: Ini adalah nama kesalahan. Misalnya, nama variabel yang hilang akan menimbulkan kesalahan yang disebut SyntaxError.
  • pesan: Ini adalah isi pesan dan menjelaskan kesalahan secara tekstual.
  • sebab: Anda dapat menggunakan properti ini dengan kesalahan khusus untuk melacak tumpukan panggilan.

Jenis Kesalahan Umum dalam JavaScript

Berikut adalah beberapa kesalahan umum yang ditemukan dalam JavaScript.

Kesalahan sintaks

Kesalahan sintaks dapat terjadi saat JavaScript mencoba menafsirkan kode Anda. Ini akan menimbulkan kesalahan jika kode Anda tidak sesuai dengan sintaks yang benar. Beberapa kesalahan umum yang dapat meningkatkan kesalahan sintaks adalah:

  • Nama variabel tidak ada.
  • Tidak ada "}" setelah suatu fungsi.
  • Tidak ada “)” setelah suatu kondisi.

ReferensiError

Kesalahan referensi terjadi ketika sebuah program mencoba untuk referensi variabel yang tidak tersedia atau di luar jangkauan.

KetikError

JavaScript dapat menimbulkan kesalahan tipe ketika tidak dapat melakukan operasi karena tipe yang diharapkan berbeda dari yang diterimanya.

kesalahan URI

Kesalahan ini terjadi jika Anda menggunakan fungsi penanganan URI global—seperti decodeURIComponent()—secara tidak benar. Akibatnya, encoding atau decoding gagal.

AgregatError

Kesalahan ini digunakan untuk mewakili beberapa kesalahan yang dibungkus menjadi satu. Gunakan ketika Anda ingin membuang banyak kesalahan sekaligus. Misalnya, Promise.any() dapat melempar AggregateError() ketika semua janji yang diteruskan ke sana ditolak.

Kesalahan internal

InternalError dilempar ketika terjadi kesalahan di dalam mesin JavaScript.

RentangError

Beberapa fungsi menentukan rentang nilai yang dapat Anda berikan sebagai argumen. Galat ini terjadi saat Anda mencoba memberikan nilai yang tidak termasuk dalam rentang tersebut.

Penanganan Kesalahan Dengan Percobaan... Blok Tangkap

JavaScript menyediakan fungsionalitas penanganan pengecualian bawaan dengan coba…tangkap…akhirnya memblokir. Ini juga memungkinkan Anda untuk meningkatkan kesalahan Anda sendiri menggunakan melemparkan operator.

Anda dapat menggunakan blok try…catch untuk menangani kesalahan yang terjadi selama runtime. Anda menulis kode yang valid yang Anda harapkan untuk dieksekusi dengan benar di blok try. Di blok tangkap, Anda dapat menulis kode penanganan kesalahan.

mencoba {
// Kode Javascript yang valid
} menangkap (kesalahan) {
// Menangani kesalahan
} akhirnya {
// Dieksekusi bahkan ketika terjadi kesalahan
}

Blok catch diabaikan jika kode di blok try tidak menimbulkan kesalahan apa pun. Jika menimbulkan kesalahan, eksekusi melompat ke blok tangkapan. Kode di blok akhirnya berjalan apakah terjadi kesalahan atau tidak. Blok ini tidak wajib, jadi hilangkan jika Anda tidak membutuhkannya.

Kode yang Anda sertakan dalam blok coba harus valid. Jika tidak, JavaScript akan membuat kesalahan penguraian.

Mari kita lihat contoh praktisnya:

mencoba {
menghibur.log (teks)
} menangkap (kesalahan) {
menghibur.catatan(kesalahan.pesan)
} akhirnya {
konsol.log("Akan dieksekusi terlepas")
}

Program ini mencoba untuk mencatat nilai dari variabel teks. Karena variabel itu tidak didefinisikan, program akan membuat kesalahan. Kesalahan ini dicetak pada konsol di blok tangkap. Blok akhirnya kemudian berjalan dan mencetak pesannya sendiri.

ReferensiError: teks tidak ditentukan
Akan dieksekusi terlepas

Dalam situasi di mana Anda perlu meningkatkan kesalahan Anda sendiri, gunakan melemparkan operator.

Pertimbangkan contoh ini yang memunculkan kesalahan jika datanya salah:

konstan data = getData()

mencoba {
jika (!data) {
melemparkan "Tidak ada data"
}

menghibur.log (data)
// melanjutkan
} menangkap(kesalahan) {
menghibur.log (kesalahan) // "Tidak ada data"
}

Dalam contoh ini, program memanggil fungsi getData() dan memberikan hasilnya ke variabel data. Di blok coba, blok tersebut memunculkan kesalahan khusus jika datanya kosong. Blok catch menangkap kesalahan itu dan mencatatnya ke konsol.

Melempar kesalahan sangat bermanfaat selama pengembangan. Anda dapat menggunakan pesan kesalahan khusus untuk memahami mengapa aplikasi Anda tidak berfungsi seperti yang diharapkan.

Seperti yang ditunjukkan contoh ini, Anda dapat menggunakan string untuk objek kesalahan. Anda sebenarnya dapat membuang ekspresi JavaScript apa pun sebagai kesalahan. Namun, demi konsistensi dengan kesalahan bawaan, gunakan objek JavaScript yang berisi nama dan pesan.

melemparkan {
nama: "Nama kesalahan",
pesan: "Pesan eror"
}

Anda juga dapat menggunakan konstruktor bawaan JavaScript saat melempar kesalahan. Konstruktor ini termasuk Error, SyntaxError, dan ReferenceError, antara lain.

Untuk melempar kesalahan menggunakan konstruktor Kesalahan, gunakan kode ini:

melemparkanbaruKesalahan("Tidak ada data")

Anda sekarang dapat merujuk nama dan pesan.

menghibur.log (kesalahan.nama) // Kesalahan
menghibur.log (kesalahan.pesan) // Tidak ada data

Memperluas Objek Kesalahan JavaScript

Kelas kesalahan khusus sangat berguna saat menangani kesalahan yang tidak sesuai dengan objek yang sudah disediakan oleh JavaScript. Misalnya, Anda mungkin ingin mengisolasi kesalahan validasi data sebagai tipe tertentu yang disebut ValidationError.

Anda dapat menggunakan Kelas JavaScript ES2015 untuk membuat kelas kesalahan khusus.

kelasValidasiErrormeluasKesalahan{
konstruktor(pesan) {
super(pesan);
this.name = "ValidasiError";
}
}

Lempar kesalahan menggunakan kelas ValidationError seperti ini:

melemparkanbaru ValidationError("Pesan kesalahan Anda")

Kesalahan yang dilempar akan menjadi objek dengan nama dan nilai pesan.

{
nama: "ValidasiError",
pesan: "Pesan kesalahan Anda"
}

Kesalahan Ada untuk Membantu

Penanganan kesalahan adalah bagian mendasar dari pemrograman, bahasa apa pun yang Anda gunakan. JavaScript memiliki dukungan hebat untuk memunculkan dan menangkap kesalahan dalam gaya pengecualian. Ini juga memiliki beberapa jenis kesalahan bawaan yang dapat Anda tangani dan gunakan untuk kasus Anda sendiri.

Beberapa kesalahan seperti kesalahan sintaks dapat tidak terdeteksi saat Anda menulis JavaScript dalam "mode ceroboh". Menggunakan mode ketat memungkinkan JavaScript untuk menangkap kesalahan yang seharusnya diabaikan.