Kesalahan JavaScript
Lempar, dan Coba...Tangkap...Akhirnya
Pernyataan try
mendefinisikan blok kode untuk dijalankan (untuk mencoba).
Pernyataan catch
tersebut mendefinisikan blok kode untuk menangani kesalahan apa pun.
Pernyataan finally
mendefinisikan blok kode untuk dijalankan terlepas dari hasilnya.
Pernyataan throw
mendefinisikan kesalahan kustom.
Kesalahan Akan Terjadi!
Saat menjalankan kode JavaScript, kesalahan yang berbeda dapat terjadi.
Kesalahan dapat berupa kesalahan pengkodean yang dilakukan oleh programmer, kesalahan karena salah input, dan hal-hal lain yang tidak terduga.
Contoh
Dalam contoh ini kami salah mengeja "alert" sebagai "adddlert" untuk secara sengaja menghasilkan kesalahan:
<p id="demo"></p>
<script>
try {
adddlert("Welcome guest!");
}
catch(err) {
document.getElementById("demo").innerHTML = err.message;
}
</script>
JavaScript menangkap addlert sebagai kesalahan, dan mengeksekusi kode tangkap untuk menanganinya.
JavaScript mencoba dan menangkap
Pernyataan try
tersebut memungkinkan Anda untuk menentukan blok kode yang akan diuji kesalahannya saat sedang dieksekusi.
Pernyataan catch
tersebut memungkinkan Anda untuk menentukan blok kode yang akan dieksekusi, jika terjadi kesalahan pada blok try.
Pernyataan JavaScript try
dan catch
datang berpasangan:
try {
Block of code to try
}
catch(err) {
Block of code to handle errors
}
JavaScript Melempar Kesalahan
Ketika terjadi kesalahan, JavaScript biasanya akan berhenti dan menghasilkan pesan kesalahan.
Istilah teknis untuk ini adalah: JavaScript akan melempar pengecualian (melempar kesalahan) .
JavaScript sebenarnya akan membuat objek Error dengan dua properti: name dan message .
Pernyataan lemparan
Pernyataan throw
tersebut memungkinkan Anda membuat kesalahan khusus.
Secara teknis Anda dapat melempar pengecualian (melempar kesalahan) .
Pengecualian dapat berupa JavaScript String
, a Number
, a Boolean
atau an Object
:
throw "Too big"; // throw a text
throw 500; // throw a number
Jika Anda menggunakan throw
bersama dengan try
dan
catch
, Anda dapat mengontrol aliran program dan menghasilkan pesan kesalahan khusus.
Contoh Validasi Masukan
Contoh ini memeriksa input. Jika nilainya salah, pengecualian (err) dilemparkan.
Pengecualian (err) ditangkap oleh pernyataan tangkap dan pesan kesalahan khusus ditampilkan:
<!DOCTYPE html>
<html>
<body>
<p>Please input a number between
5 and 10:</p>
<input id="demo" type="text">
<button type="button"
onclick="myFunction()">Test Input</button>
<p id="p01"></p>
<script>
function myFunction() {
const message =
document.getElementById("p01");
message.innerHTML = "";
let x =
document.getElementById("demo").value;
try {
if(x == "") throw "empty";
if(isNaN(x)) throw "not a number";
x = Number(x);
if(x < 5) throw
"too low";
if(x > 10) throw "too
high";
}
catch(err) {
message.innerHTML =
"Input is " + err;
}
}
</script>
</body>
</html>
Validasi HTML
Kode di atas hanyalah sebuah contoh.
Peramban modern akan sering menggunakan kombinasi JavaScript dan validasi HTML bawaan, menggunakan aturan validasi yang telah ditentukan sebelumnya yang ditentukan dalam atribut HTML:
<input id="demo" type="number" min="5" max="10" step="1">
Anda dapat membaca lebih lanjut tentang validasi formulir di bab selanjutnya dari tutorial ini.
Pernyataan akhirnya
Pernyataan finally
tersebut memungkinkan Anda mengeksekusi kode, setelah mencoba dan menangkap, terlepas dari hasilnya:
Sintaksis
try {
Block of code to try
}
catch(err) {
Block of code to handle errors
}
finally {
Block of code to be executed regardless of the try / catch result
}
Contoh
function myFunction() {
const message =
document.getElementById("p01");
message.innerHTML = "";
let x =
document.getElementById("demo").value;
try {
if(x == "") throw "is empty";
if(isNaN(x))
throw "is not a number";
x = Number(x);
if(x >
10) throw "is too high";
if(x <
5) throw "is too low";
}
catch(err)
{
message.innerHTML = "Error: " +
err + ".";
}
finally {
document.getElementById("demo").value = "";
}
}
Objek Kesalahan
JavaScript memiliki objek kesalahan bawaan yang menyediakan informasi kesalahan saat terjadi kesalahan.
Objek kesalahan menyediakan dua properti yang berguna: nama dan pesan.
Properti Objek Kesalahan
Properti | Keterangan |
---|---|
nama | Menetapkan atau mengembalikan nama kesalahan |
pesan | Menetapkan atau mengembalikan pesan kesalahan (string) |
Nilai Nama Kesalahan
Enam nilai berbeda dapat dikembalikan oleh properti nama kesalahan:
Nama Kesalahan | Keterangan |
---|---|
kesalahan evaluasi | Terjadi kesalahan dalam fungsi eval() |
RentangError | Angka "di luar jangkauan" telah terjadi |
ReferensiError | Referensi ilegal telah terjadi |
Kesalahan sintaks | Terjadi kesalahan sintaks |
TypeError | Terjadi kesalahan ketik |
kesalahan URI | Terjadi kesalahan dalam encodeURI() |
Enam nilai yang berbeda dijelaskan di bawah ini.
Kesalahan Evaluasi
An EvalError
menunjukkan kesalahan dalam fungsi eval().
Versi JavaScript yang lebih baru tidak membuang EvalError. Gunakan SyntaxError sebagai gantinya.
Rentang Kesalahan
A RangeError
dilempar jika Anda menggunakan angka yang berada di luar kisaran nilai hukum.
Misalnya: Anda tidak dapat menyetel jumlah digit signifikan suatu angka menjadi 500.
Contoh
let num = 1;
try {
num.toPrecision(500); // A number cannot have 500
significant digits
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
Kesalahan Referensi
A ReferenceError
dilempar jika Anda menggunakan (referensi) variabel yang belum dideklarasikan:
Contoh
let x = 5;
try {
x = y + 1; // y cannot be used (referenced)
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
Kesalahan sintaks
A SyntaxError
dilemparkan jika Anda mencoba mengevaluasi kode dengan kesalahan sintaksis.
Contoh
try {
eval("alert('Hello)"); //
Missing ' will produce an error
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
Ketik Kesalahan
A TypeError
dilemparkan jika Anda menggunakan nilai yang berada di luar kisaran tipe yang diharapkan:
Contoh
let num = 1;
try {
num.toUpperCase(); // You cannot convert a number
to upper case
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
Kesalahan URI (Uniform Resource Identifier)
A URIError
dilemparkan jika Anda menggunakan karakter ilegal dalam fungsi URI:
Contoh
try {
decodeURI("%%%"); // You cannot URI decode
percent signs
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
Properti Objek Kesalahan Non-Standar
Mozilla dan Microsoft mendefinisikan beberapa properti objek kesalahan non-standar:
fileName (Mozilla)
lineNumber (Mozilla)
kolomNumber (Mozilla)
tumpukan (Mozilla)
deskripsi (Microsoft)
nomor (Microsoft)
Jangan gunakan properti ini di situs web publik. Mereka tidak akan bekerja di semua browser.
Referensi Kesalahan Lengkap
Untuk referensi lengkap objek Kesalahan, buka Referensi Kesalahan JavaScript Lengkap kami .