Kesalahan JavaScript - Throw dan Try to Catch
- Halaman Sebelumnya Prioritas Operator JS
- Halaman Berikutnya Domain JS
try
Perintah memungkinkan Anda menguji kesalahan di dalam blok kode.
catch
Perintah memungkinkan Anda menangani kesalahan.
throw
Kalimat ini memungkinkan Anda membuat kesalahan khusus.
finally
Memungkinkan Anda menjalankan kode, setelah try dan catch, tanpa peduli apapun hasilnya.
Kesalahan pasti akan terjadi!
Ketika menjalankan kode JavaScript, berbagai kesalahan dapat terjadi.
Kesalahan dapat disebabkan oleh kesalahan pengerjaan kode programer, kesalahan masukan, atau masalah yang tidak diperkirakan lainnya.
Contoh
Dalam contoh ini, kita melalui alert
Menulis kode peringatan untuk sengaja membangkitkan kesalahan:
<p id="demo"></p> <script> try { alert("Selamat datang!"); } catch(err) { document.getElementById("demo").innerHTML = err.message; } </script>
JavaScript menangkap alert sebagai kesalahan, lalu melaksanakan kode untuk menangani kesalahan.
JavaScript try dan catch
try
Perintah memungkinkan Anda mendefinisikan blok kode untuk mendeteksi kesalahan saat menjalankan.
catch
Perintah memungkinkan Anda mendefinisikan blok kode yang akan dijalankan, jika terjadi kesalahan di blok kode try.
Pernyataan JavaScript try
dan catch
Muncul bersama-sama:
try { Blok kode untuk tes } catch(err) { Blok kode untuk menangani kesalahan }
JavaScript menolak kesalahan
Ketika terjadi kesalahan, JavaScript biasanya akan berhenti dan memunculkan pesan kesalahan.
Terminologi ini disebut:JavaScript akan melempar kesalahan (melempar kesalahan)。
JavaScript sebenarnya akan membuat kesalahan dengan dua properti: Obek Error:name
dan pesan
。
Kalimat throw
throw
Kalimat ini memungkinkan Anda membuat kesalahan khusus.
Tekniknya Anda dapatMelempar Kesalahan (Melempar Kesalahan)。
Kesalahan dapat berupa string, angka, boolean, atau objek JavaScript:
throw "Terlalu Besar"; // Melempar teks throw 500; // Melempar angka
jika throw
dengan try
dan catch
Dapat digunakan bersama-sama untuk mengendalikan alur program dan menghasilkan pesan kesalahan khusus.
Kasus Validasi Input
Contoh ini akan memeriksa input. Jika nilai salah, akan terjadi kesalahan (kesalahan).
Kesalahan ini (kesalahan) ditangkap oleh kalimat catch dan menampilkan pesan kesalahan khusus:
<!DOCTYPE html> <html> <body> <p>Masukkan angka antara 5 dan 10:</p> <input id="demo" type="text"> <button type="button" onclick="fungsiSaya()">Uji Input</button> <p id="pesan"></p> <script> function fungsiSaya() { var pesan, x; message = document.getElementById("message"); message.innerHTML = ""; x = document.getElementById("demo").value; try { if(x == "") throw "kosong"; if(isNaN(x)) throw "bukan angka"; x = Number(x); if(x < 5) throw "terlalu kecil"; if(x > 10) throw "terlalu besar"; } catch(err) { pesan.innerHTML = "Input adalah " + kesalahan; } } </script> </body> </html>
Validasi HTML
Kode di atas hanya contoh saja.
Browser modern biasanya menggabungkan JavaScript dengan validasi HTML bawaan melalui penggunaan aturan validasi yang diatur di properti HTML:
<input id="demo" type="number" min="5" max="10" step="1">
Anda akan belajar lebih banyak tentang validasi formulir di bab selanjutnya tutorial ini.
Kalimat finally
finally
Kalimat ini memungkinkan Anda melaksanakan kode setelah try dan catch, tanpa mengurangi apapun hasilnya:
try { // Blok kode untuk pengujian } catch(err) { // Blok kode untuk menangani kesalahan } finally { // Blok kode yang dieksekusi tanpa mengurangi apapun hasilnya }
Contoh
function fungsiSaya() { var pesan, x; message = document.getElementById("message"); message.innerHTML = ""; x = document.getElementById("demo").value; try { if(x == "") throw "kosong"; if(isNaN(x)) throw "bukan angka"; x = Number(x); if(x > 10) throw "terlalu besar"; if(x < 5) throw "terlalu kecil"; } catch(err) { message.innerHTML = "kesalahan: " + err + "."; } finally { document.getElementById("demo").value = ""; } }
Obek Error
JavaScript memiliki obek error bawaan yang menyediakan informasi kesalahan saat terjadi kesalahan.
obek error menyediakan dua properti yang berharga:name
dan pesan
。
Properti Obek Kesalahan
properti | deskripsi |
---|---|
name | atur atau kembalikan nama kesalahan |
pesan | atur atau kembalikan pesan kesalahan (sebuah string) |
Nilai Nama Kesalahan
properti name error dapat mengembalikan enam nilai yang berbeda:
nama kesalahan | deskripsi |
---|---|
EvalError | kesalahan yang terjadi di dalam fungsi eval() |
RangeError | kesalahan bilangan yang melebihi rentang terjadi |
ReferenceError | kesalahan referensi ilegal terjadi |
SyntaxError | kesalahan sintaks terjadi |
TypeError | kesalahan tipe terjadi |
URIError | kesalahan yang terjadi di dalam encodeURI() |
di bawah ini kami jelaskan enam nilai yang berbeda.
Kesalahan Eval
EvalError
indikasi kesalahan di dalam fungsi eval().
Versi JavaScript yang baru tidak akan melempar kesalahan apapun EvalError
。Gunakan SyntaxError
gantikan.
kesalahan rentang
RangeError
akan dilempar saat Anda menggunakan angka yang berada di luar rentang nilai yang sah.
contoh: Anda tidak dapat menata jumlah digit angka yang efektif menjadi 500.
Contoh
var num = 1; try { num.toPrecision(500); // Bilangan tidak dapat memiliki 500 angka efektif } catch(err) { document.getElementById("demo").innerHTML = err.name; }
kesalahan referensi
Jika Anda menggunakan (mengambil) variabel yang belum dideklarasikan, maka ReferenceError
akan dilempar:
Contoh
var x; try { x = y + 1; // y tidak dapat diambil (digunakan) } catch(err) { document.getElementById("demo").innerHTML = err.name; }
kesalahan sintaks
Jika Anda menghitung kode dengan kesalahan sintaks, akan SyntaxError
Ditentukan:
Contoh
try { eval("alert('Hello)"); // Kurangnya ' akan memicu kesalahan } catch(err) { document.getElementById("demo").innerHTML = err.name; }
kesalahan tipe
Jika nilai yang Anda gunakan tidak berada dalam rentang nilai yang diharapkan, maka TypeError
Ditentukan:
Contoh
var num = 1; try { num.toUpperCase(); // Anda tidak dapat mengubah angka ini ke huruf besar } catch(err) { document.getElementById("demo").innerHTML = err.name; }
Error URI
Jika Anda menggunakan karakter ilegal dalam fungsi URI, maka URIError
Ditentukan:
Contoh
try { decodeURI("%%%"); // Anda tidak dapat mengenkodifikasi persen ini dalam URI } catch(err) { document.getElementById("demo").innerHTML = err.name; }
Properti objek Error standar yang tidak biasa
Mozilla dan Microsoft menentukan properti objek error standar yang tidak biasa:
- fileName (Mozilla)
- lineNumber (Mozilla)
- columnNumber (Mozilla)
- stack (Mozilla)
- description (Microsoft)
- number (Microsoft)
Jangan gunakan properti ini di situs publik. Mereka tidak akan berfungsi di semua browser.
- Halaman Sebelumnya Prioritas Operator JS
- Halaman Berikutnya Domain JS