Kesalahan JavaScript - Throw dan Try to Catch

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>

Coba Sendiri

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> 

Coba Sendiri

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 = "";
    }
}

Coba Sendiri

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;
} 

Coba Sendiri

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;
} 

Coba Sendiri

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;
} 

Coba Sendiri

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;
} 

Coba Sendiri

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;
} 

Coba Sendiri

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.