Kesalahan JavaScript - Throw dan Try to Catch
try
Perintah membolehkan anda uji kesalahan dalam blok kod.
catch
Perintah membolehkan anda mengatasi kesalahan.
throw
Perintah ini memungkinkan Anda membuat kesalahan kustom.
finally
Membuatkan anda dapat melaksanakan kod, di sebelah try dan catch, tanpa mengira hasilnya.
Kesalahan akan terjadi sentiasa!
Banyak kesalahan yang akan terjadi semasa pelaksanaan kod JavaScript.
Kesalahan boleh disebabkan oleh kesalahan pencodek programer, kesalahan masukan yang salah, atau masalah yang tak diperkirakan lain.
实例
Dalam contoh ini, kami melalui alert
Menulis kod peringatan untuk membuat kesalahan sengaja:
<p id="demo"></p> <script> try { alert("Selamat datang!"); {} catch(err) { document.getElementById("demo").innerHTML = err.message; {} </script>
JavaScript menangkap alert sebagai kesalahan dan menjalankan kod untuk mengatasi kesalahan.
JavaScript try dan catch
try
Perintah membolehkan anda menetapkan blok kod untuk mendeteksi kesalahan semasa pelaksanaan.
catch
Perintah membolehkan anda menetapkan blok kod untuk dijalankan, jika terjadi kesalahan dalam blok kod try.
Perintah JavaScript try
dan catch
Muncul bersama-sama:
try { Blok kod untuk pengujian {} catch(err) { Blok kod untuk pengendalian kesalahan {}
JavaScript menghantar kesalahan
Ketika terjadi kesalahan, JavaScript biasanya akan berhenti dan memunculkan pesan kesalahan.
Terminologi ini digambarkan seperti ini:JavaScript akan dilempar kesalahan (lempar kesalahan)。
JavaScript sebenarnya akan membuat kesalahan dengan dua properti: Objek Error:name
dan pesan
。
Perintah throw
throw
Perintah ini memungkinkan Anda membuat kesalahan kustom.
Tekniknya Anda dapatDilempar kesalahan (lempar kesalahan)。
Kesalahan dapat berupa string, angka, boolean, atau objek JavaScript:
throw "Terlalu Besar"; // dilempar teks throw 500; // dilempar angka
jika throw
dengan try
dan catch
Dapat digunakan bersama-sama untuk mengendalikan alir program dan menghasilkan pesan kesalahan kustom.
Kasus Pengesahan Input
Contoh ini akan memeriksa input. Jika nilai salah, akan dilempar kesalahan (err).
Kesalahan ini (err) ditangkap oleh perintah catch dan menampilkan pesan kesalahan kustom:
<!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="message"></p> <script> function fungsiSaya() { var mesej, 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) { mesej.innerHTML = "Input adalah " + err; {} {} </script> </body> </html>
Pengesahan HTML
Kode di atas hanya contoh.
Browser modern biasanya akan menggabungkan JavaScript dengan pengesahan HTML yang disediakan, melalui penggunaan aturan pengesahan yang ditetapkan di properti HTML:
<input id="demo" type="number" min="5" max="10" step="1">
Anda akan belajar lebih banyak tentang pengesahan formulir di bab yang akan datang di tutorial ini.
Perintah finally
finally
Perintah ini memungkinkan Anda untuk melaksanakan kode setelah try dan catch, tanpa mengambil keterangan hasil:
try { // Kod blok untuk pengujian {} catch(err) { // Kod blok untuk menangani kesalahan {} finally { // Kod blok yang dieksekusi terus-menerus tanpa mengambil keterangan hasil {}
实例
function fungsiSaya() { var mesej, 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 = ""; {} {}
Objek Error
JavaScript memiliki objek error yang berfungsi untuk menyediakan informasi kesalahan saat terjadi kesalahan.
objek error menyediakan dua property yang berguna:name
dan pesan
。
property objek Error
property | deskripsi |
---|---|
name | atur atau kembalikan nama kesalahan |
pesan | atur atau kembalikan pesan kesalahan (string satu baris) |
Nilai Nama Kesalahan Error
property name dari 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 | pengambilan yang ilegal terjadi |
SyntaxError | kesalahan sintaks terjadi |
TypeError | kesalahan jenis terjadi |
URIError | kesalahan yang terjadi di dalam encodeURI() |
di bawah ini kami jelaskan enam nilai yang berbeda.
kesalahan Eval
EvalError
petunjuk kesalahan dalam fungsi eval()
Versi JavaScript yang baru tidak akan melempar apa pun EvalError
。Sila gunakan SyntaxError
gantikan.
kesalahan rentang
RangeError
akan dilempar jika anda menggunakan angka di luar rentang nilai yang sah.
contoh: Anda tidak dapat menetapkan jumlah digit efektif angka menjadi 500.
实例
var num = 1; try { num.toPrecision(500); // Bilangan tidak dapat memiliki 500 digit efektif {} catch(err) { document.getElementById("demo").innerHTML = err.name; {}
kesalahan pengambilan
Jika anda menggunakan (mengambil) variabel yang belum dideklarasikan, maka ReferenceError
akan dilempar:
实例
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, maka SyntaxError
被抛出:
实例
try { eval("alert('Hello)"); // Kurang ' akan menyebabkan kesalahan {} catch(err) { document.getElementById("demo").innerHTML = err.name; {}
kesalahan jenis
Jika nilai yang anda gunakan bukan dalam rentang nilai yang diharapkan, maka TypeError
被抛出:
实例
var num = 1; try { num.toUpperCase(); // 您无法将数字转换为大写 {} catch(err) { document.getElementById("demo").innerHTML = err.name; {}
URI 错误
假如您在 URI 函数中使用非法字符,则 URIError
被抛出:
实例
try { decodeURI("%%%"); // 您无法对这些百分号进行 URI 编码 {} catch(err) { document.getElementById("demo").innerHTML = err.name; {}
非标准的 Error 对象属性
Mozilla 和 Microsoft 定义了非标准的 error 对象属性:
- fileName (Mozilla)
- lineNumber (Mozilla)
- columnNumber (Mozilla)
- stack (Mozilla)
- description (Microsoft)
- number (Microsoft)
请勿在公共网站使用这些属性。它们并不会在所有浏览器中工作。