Seperti bahasa Java, JavaScript dapat melempar pengecualian melalui pernyataan lemparan. Tidak seperti bahasa Java, JavaScript dapat melempar semua jenis nilai melalui pernyataan lemparan, tidak hanya untuk melempar objek kesalahan.
Salinan kode adalah sebagai berikut:
// Lemparkan objek kesalahan.
mencoba{
melempar kesalahan baru ("Objek Pesan dalam Kesalahan");
} catch (e) {
Console.log (e); // Kesalahan: Pesan dalam Objek Kesalahan
}
mencoba{
melempar "pesan mentah";
} catch (pesan) {
console.log (pesan); // pesan mentah
console.log (typeof pesan); // string
}
mencoba{
Lempar 42;
} catch (code) {
console.log (kode); // 42
console.log (typeof code); // nomor
}
Seperti bahasa Java, jika pengecualian tidak ditangkap oleh pernyataan tangkapan apa pun, pengecualian pada akhirnya akan dilemparkan ke pengguna:
Salinan kode adalah sebagai berikut:
mencoba{
// Lempar kesalahan baru ("Tes Kesalahan"); // Kesalahan akan dilemparkan. Kesalahan: Kesalahan uji
} Akhirnya{
}
mencoba{
Lempar 42; // Kesalahan akan dilemparkan. Kesalahan: 42
} Akhirnya{
}
Untuk pengecualian melempar tangkapan, JavaScript juga menggunakan pernyataan TRY/CATCH/AKHIRNYA. Aturan penggunaannya adalah: mencoba diperlukan, menangkap dan akhirnya merupakan pernyataan opsional, tetapi setidaknya satu tangkapan dan akhirnya harus muncul.
Dalam pernyataan Catch, parameter E (atau nama variabel hukum lainnya) dapat didefinisikan untuk menyimpan outlier yang dilemparkan. Di dalam pernyataan Catch, parameter ini dapat digunakan sebagai variabel lokal. Tidak seperti penggunaan variabel lain dalam JavaScript, variabel parameter dalam pernyataan tangkapan hanya valid di dalam pernyataan tangkapan (ruang lingkup variabel ini terbatas pada pernyataan tangkapan).
Untuk pernyataan akhirnya, kode di akhirnya akan dieksekusi terlepas dari apakah ada pengecualian yang dilemparkan dalam mencoba. Detail termasuk:
1. Tidak ada pengecualian yang terjadi dalam mencoba. Ketika pernyataan coba dieksekusi, kode di akhirnya akan dieksekusi.
2. Tidak ada pengecualian yang terjadi dalam coba, tetapi ketika kode coba keluar karena pelaksanaan pernyataan istirahat, lanjutkan atau pengembalian, kode di akhirnya akan dieksekusi.
3. Pengecualian terjadi dalam mencoba. Setelah pengecualian diproses oleh pernyataan Catch, kode di akhirnya dieksekusi.
4. Pengecualian terjadi dalam mencoba, tetapi ketika pengecualian perlu terus dilemparkan karena tidak adanya pernyataan tangkapan, kode di akhirnya akan dieksekusi. Perlu dicatat bahwa dalam kasus di mana pernyataan tangkapan hilang, JavaScript pertama -tama akan menjalankan kode di akhirnya, dan kemudian terus melemparkan pengecualian ke atas.
Dalam Kode Akhirnya, jika Break, Lanjutkan atau Kembalikan Pernyataan muncul, JavaScript akan secara langsung menjalankan pernyataan ini, dan mengabaikan istirahat, lanjutkan atau pengembalian pernyataan yang mungkin ada dalam kode coba; Bahkan jika pernyataan tangkapan hilang, menghasilkan pengecualian yang perlu dilaporkan, JS akan membuang informasi pelaporan pengecualian dan terus menjalankan jeda, melanjutkan atau mengembalikan pernyataan dalam kode akhirnya. Demikian pula, jika pengecualian dilemparkan ke dalam kode akhirnya, JavaScript akan membuang semua istirahat, melanjutkan atau mengembalikan pernyataan dalam kode coba, dan juga membuang kemungkinan perilaku pelaporan pengecualian, dan hanya melemparkan pengecualian dalam kode akhirnya.