JavaScript ialah bahasa yang biasa digunakan untuk penanda halaman web dan pengaturcaraan skrip Seperti bahasa pengaturcaraan lain, JavaScript juga mengandungi pengecualian dan mekanisme pengendalian pengecualian. Artikel ini akan memperkenalkan pengecualian dan mekanisme pengendalian pengecualian dalam JavaScript untuk membantu pembaca lebih memahami dan bertindak balas terhadap pengecualian dalam program JavaScript.
1. Pengecualian dalam JavaScript
Dalam JavaScript, pengecualian merujuk kepada ralat atau situasi luar biasa yang dihadapi oleh atur cara semasa pelaksanaan. Pengecualian ini mungkin berasal dari penyemak imbas, persekitaran atau program itu sendiri termasuk: ralat sintaks, ralat masa jalan, ralat taip, ralat rangkaian, dsb.
Ralat sintaks bermaksud atur cara mempunyai ralat tatabahasa dan tidak boleh dihuraikan dan dilaksanakan dengan betul. Contohnya, kata kunci tidak dieja dengan betul, kurungan tiada, koma bertitik tiada, dsb.
Berikut ialah contoh ralat sintaks:
var number = 10 if (number > 5) { console.log("Number is greater than 5.") }
Dalam baris pertama kod, koma bertitik tiada, menyebabkan atur cara gagal menghuraikannya dengan betul.
Ralat masa jalan bermaksud bahawa atur cara menghadapi ralat atau pengecualian yang tidak boleh dikendalikan semasa pelaksanaan. Contohnya, jenis pembolehubah tidak betul, pembolehubah tidak ditentukan diakses, tatasusunan di luar sempadan, dsb.
Berikut ialah contoh ralat masa jalan:
var numbers = [1, 2, 3, 4] console.log(numbers[10])
Dalam kod, atur cara cuba mencetak elemen pada indeks 10 dalam tatasusunan, tetapi sebenarnya panjang tatasusunan ialah hanya 4, jadi ia membuang pengecualian di luar sempadan.
Ralat jenis bermaksud program cuba untuk mengendalikan atau menetapkan pembolehubah jenis yang tidak serasi, seperti memberikan rentetan kepada pembolehubah berangka atau lulus pembolehubah berangka Untuk fungsi yang memerlukan rentetan, dsb.
Berikut ialah contoh ralat jenis:
var number = 10 console.log("Number is " + number)
Dalam baris kedua kod, rentetan dan nombor digabungkan, yang mengakibatkan ralat jenis disebabkan jenis yang tidak serasi.
Ralat rangkaian merujuk kepada ralat atau situasi tidak normal yang berlaku apabila program memperoleh sumber jauh atau berkomunikasi dengan pelayan. Contohnya, masa sambungan rangkaian tamat, pelayan tidak boleh disambungkan, dsb.
Berikut ialah contoh ralat rangkaian:
var request = new XMLHttpRequest() request.open("GET", "https://api.example.com/data.json", true) request.send()
Dalam kod, program cuba mendapatkan fail data.json di bawah api.example.com melalui objek XMLHttpRequest, tetapi jika pelayan tidak dapat bertindak balas atau menyambungkan Tamat masa akan menyebabkan ralat rangkaian.
2. Mekanisme pengendalian pengecualian JavaScript
JavaScript menyediakan mekanisme pengendalian pengecualian untuk membantu pengaturcara menangkap dan mengendalikan pengecualian. Mekanisme pengendalian pengecualian termasuk blok pernyataan cuba-tangkap-akhirnya dan pernyataan lontaran.
blok pernyataan cuba-tangkap-akhirnya digunakan untuk menangkap dan mengendalikan pengecualian. Sintaksnya adalah seperti berikut:
try { // 可能会引发异常的代码 } catch (e) { // 处理异常的代码 } finally { // finally代码块(可选) }
Dalam blok percubaan, pengaturcara boleh meletakkan segmen kod yang mungkin membuang pengecualian. Jika segmen kod dijalankan seperti biasa, blok kod tangkapan akan dilangkau. Jika pengecualian berlaku semasa pelaksanaan segmen kod, ia akan melompat ke blok kod tangkapan untuk melaksanakan pengendalian pengecualian.
Blok kod tangkapan menerima parameter e, yang mewakili pengecualian tangkapan. Dalam blok kod tangkapan, pengaturcara boleh menentukan logik pengendalian pengecualian, seperti mencetak maklumat pengecualian, menghantar laporan ralat ke pelayan, dsb.
Blok kod akhirnya biasanya digunakan untuk mengendalikan operasi pembersihan, seperti menutup fail, mengeluarkan sumber, dll. Tidak kira sama ada blok kod cuba dilaksanakan dengan jayanya atau dengan pengecualian, kod dalam blok kod akhirnya akan dilaksanakan.
Berikut ialah contoh blok try-catch-finally:
var divisor = 0 try { var result = 10 / divisor console.log("Result is " + result) } catch (e) { console.log("Exception: " + e.message) } finally { console.log("Finally block executed.") }
Dalam kod, program cuba membahagikan 10 dengan pembahagi pembolehubah Memandangkan pembahagi ialah 0, pengecualian akan dibuang. Urutan pelaksanaan program melompat ke blok kod tangkapan, dan mesej pengecualian "Pengecualian: Pembahagian dengan sifar." Akhirnya, operasi pembersihan dalam blok kod akhirnya dilaksanakan, dan pernyataan "Akhirnya blok dilaksanakan adalah output."
penyataan balingan digunakan untuk menaikkan pengecualian secara manual dan menghantar objek pengecualian kepada mekanisme pengendalian pengecualian. Sintaksnya adalah seperti berikut:
throw expression;
ungkapan mewakili objek pengecualian yang akan dilemparkan, yang boleh menjadi rentetan, nombor, objek, dsb. Dalam atur cara, kenyataan lontaran biasanya digunakan untuk mengesahkan parameter input, mengesan status program, dsb.
Berikut ialah contoh pernyataan lontaran:
var age = -1 try { if (age < 0) { throw "Age is invalid." } else { console.log("Age is " + age) } } catch (e) { console.log("Exception: " + e) } finally { console.log("Finally block executed.") }
Dalam kod, jika umur pembolehubah kurang daripada 0, atur cara akan menaikkan pengecualian rentetan "Umur tidak sah" secara manual. dan lompat ke Mengendalikan pengecualian dalam blok kod tangkapan.
3. Ringkasan
Pengecualian dan mekanisme pengendalian pengecualian dalam JavaScript adalah kunci untuk menulis program berkualiti tinggi. Apabila menulis atur cara JavaScript, pengaturcara harus memberikan pertimbangan yang mencukupi terhadap kemungkinan pengecualian dan menggunakan mekanisme pengendalian pengecualian untuk memastikan ketepatan dan kestabilan program. Dalam praktiknya, pengaturcara boleh menggunakan blok pernyataan try-catch-finally dan penyataan lempar untuk menangkap dan mengendalikan pengecualian dan melindungi pelaksanaan biasa program.
Atas ialah kandungan terperinci Pengecualian dan mekanisme pengendalian pengecualian dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!