satu. Salah kategasi
1. Kesalahan sintaksis
Juga dikenal sebagai kesalahan parsing, terjadi ketika menyusun dalam bahasa pemrograman tradisional, dan terjadi dalam javascript saat menafsirkan. Kesalahan ini secara langsung disebabkan oleh karakter yang tidak terduga dalam kode, dan kemudian tidak dapat dikompilasi/ditafsirkan secara langsung. Misalnya, barisan kode tidak memiliki braket penutup, menghasilkan kesalahan sintaksis. Ketika kesalahan sintaks terjadi, kode tidak dapat dieksekusi. Dalam JavaScript, hanya kode di utas yang sama yang akan dipengaruhi oleh kesalahan sintaksis. Kode di utas lain dan dalam file yang direferensikan secara eksternal dapat terus dieksekusi jika tidak tergantung pada kode yang berisi kesalahan.
2. Kesalahan runtime
Juga dikenal sebagai pengecualian (pengecualian, setelah kompilasi/penerjemah). Pada titik ini, masalahnya tidak ada dalam sintaks kode, tetapi dalam beberapa kasus operasi yang berusaha diselesaikan adalah ilegal. misalnya.
window.openmyfile ();
Karena metode OpenMyFile () tidak ada, browser akan mengembalikan pengecualian. Pengecualian hanya mempengaruhi utas yang terjadi, dan utas JavaScript lainnya dapat terus dieksekusi secara normal.
dua. Penanganan kesalahan
1. Fungsi Penanganan Acara OneError
Ini adalah mekanisme pertama yang membantu JavaScript dalam menangani kesalahan. Ketika pengecualian terjadi pada halaman, acara kesalahan ditembakkan pada objek jendela. Misalnya.
Salinan kode adalah sebagai berikut:
<Html>
<head>
<Title> Contoh OnError </iteme>
<type skrip = "Teks/JavaScript">
window.onError = function () {
peringatan ("Terjadi kesalahan!");
}
</script>
</head>
<body onload = "function1 ()">
</body>
</html>
Dalam kode di atas, mencoba memanggil fungsi yang tidak ada saat halaman dimuat, pengecualian akan dinaikkan. Pesan kesalahan yang "terjadi kesalahan" muncul. Namun, pesan kesalahan browser juga ditampilkan. Bagaimana cara menyembunyikannya di browser? Kembalikan metode yang benar.
Salinan kode adalah sebagai berikut:
<type skrip = "Teks/JavaScript">
window.onError = function () {
peringatan ("Terjadi kesalahan!");
Kembali Benar;
}
</script>
1) Hapus pesan kesalahan
Onerror Handler menyediakan tiga jenis informasi untuk menentukan sifat kesalahan yang tepat:
i) pesan kesalahan - Untuk kesalahan yang diberikan, browser akan menampilkan informasi yang sama;
ii) URL - Di mana file terjadi kesalahan;
Nomor baris - Nomor baris di mana kesalahan terjadi di URL yang diberikan.
Lihat contoh berikut untuk metode akses:
Salinan kode adalah sebagai berikut:
<type skrip = "Teks/JavaScript">
window.onError = function (smessage, surl, sline) {
peringatan ("Terjadi kesalahan!/n" + smessage + "/nurl:" + Surl + "/Nline Nomor:" + Sline);
Kembali Benar;
}
</script>
2) Kesalahan pemuatan gambar
Objek jendela bukan satu -satunya objek yang mendukung fungsi penanganan acara OnError, juga memberikan dukungan untuk objek gambar. Ketika suatu gambar tidak dapat dimuat dengan sukses karena tidak adanya file, peristiwa kesalahan dipicu pada gambar. Mari kita lihat contoh:
<img src = "amigo.jpg" oneError = "alert ('terjadi kesalahan saat memuat gambar')"/>
Contoh di atas secara langsung mengalokasikan fungsi event handler OnError di HTML. Tentu saja, Anda juga dapat mengalokasikan fungsi pemrosesan acara melalui skrip. Sebelum mengatur karakteristik SRC gambar, Anda harus menunggu halaman dimuat sepenuhnya. Kodenya adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
<Html>
<head>
<Title> tes kesalahan gambar </iteme>
<type skrip = "Teks/JavaScript">
function handleLoad () {
document.images [0] .onError = function () {
peringatan ("Terjadi kesalahan saat memuat gambar!");
};
document.images [0] .src = "amigo.jpg";
}
</script>
</head>
<body onload = "handleLoad ()">
<img/>
<body>
</html>
Catatan: Berbeda dengan fungsi OnError Event Handler dari objek Window, acara OnError gambar memiliki parameter informasi tambahan.
3) Tangani kesalahan sintaksis
Onerror juga dapat menangani kesalahan sintaksis. Tetapi satu hal yang harus dicatat bahwa event handler harus menjadi kode pertama yang muncul di halaman, karena jika kesalahan sintaks terjadi sebelum mengatur event handler, event handler tidak akan berguna.
Catatan: Kesalahan sintaks akan sepenuhnya menghentikan eksekusi kode.
Catatan: Masalah utama dengan menggunakan Onerror Event Handler adalah bahwa itu adalah bagian dari BOM, sehingga tidak ada standar yang dapat mengendalikan perilakunya. Oleh karena itu, browser yang berbeda menggunakan acara ini untuk menangani kesalahan secara signifikan. misalnya. Ketika peristiwa kesalahan terjadi di IE, kode normal akan terus dieksekusi, semua variabel dan data disimpan, dan dapat diakses melalui fungsi penangan acara OnError. Di Mozilla, eksekusi kode normal akan berakhir, dan semua variabel dan data sebelum kesalahan terjadi dihancurkan.
2. Coba ... pernyataan tangkap
Ecmpcript Edisi Ketiga memperkenalkan pernyataan TRY ... Catch. Misalnya.
Salinan kode adalah sebagai berikut:
mencoba {
window.openfile1 ();
alert ("berhasil disebut metode openfile1");
} catch (Exception) {
peringatan ("Pengecualian terjadi!");
} Akhirnya {
peringatan ("Coba..Catch Test berakhir!");
}
Tidak seperti Java, standar ecmascript hanya dapat memiliki satu pernyataan tangkapan dalam pernyataan TRY ... Catch, karena JavaScript adalah bahasa tipe yang lemah dan tidak dapat menentukan jenis pengecualian spesifik dalam klausa tangkapan. Terlepas dari jenis kesalahan, itu ditangani oleh pernyataan tangkapan yang sama. Namun, Mozilla telah memperluasnya dan dapat menambahkan beberapa pernyataan tangkapan, yang tidak disarankan untuk menggunakan cara ini.
Akhirnya digunakan untuk memasukkan kode untuk dieksekusi terlepas dari apakah terjadi pengecualian, yang berguna untuk menutup tautan terbuka dan membebaskan sumber daya.
1) Coba bersarang… pernyataan tangkapan
Digunakan untuk menangani masalah kesalahan dalam klausa tangkapan, mari kita lihat contoh, kodenya adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
mencoba {
eval ("a ++ b");
} catch (oException) {
peringatan ("Terjadi kesalahan!");
mencoba {
var aerror = array baru (10000000000000000000000000000000000000000000000000000000000000000.000);
} catch (Exception) {
waspada ("Terjadi kesalahan dalam klausa tangkapan!");
}
} Akhirnya{
Peringatan ("Selesai")
}
2) Objek kesalahan
Ketika kesalahan terjadi, JavaScript memiliki kelas dasar kesalahan untuk melempar. Ini memiliki dua karakteristik:
i) Nama - String yang mewakili tipe yang salah
ii) Pesan - Pesan Kesalahan Aktual.
Nama objek kesalahan sesuai dengan kelasnya dan dapat menjadi salah satu nilai berikut:
Evalerror: kesalahan terjadi pada fungsi eval ();
RangeError: Nilai numerik melebihi kisaran yang dapat diwakili JavaScript;
ReferenceError: Referensi ilegal digunakan;
Sintakserror: Terjadi kesalahan sintaks dalam panggilan fungsi eval (), dan kesalahan lainnya yang semakin banyak dilaporkan oleh browser dan tidak dapat diproses melalui cobalah ... Catch;
TypeError: Jenis variabel bukanlah yang diharapkan diperlukan;
Urierror: Terjadi kesalahan dalam fungsi encodeuri atau decodeuri.
3) Tentukan jenis kesalahan
Dua metode berikut dapat digunakan untuk menentukan jenis kesalahan. Metode pertama didasarkan pada atribut nama pengecualian, sebagai berikut:
Salinan kode adalah sebagai berikut:
mencoba {
eval ("a ++ b");
} catch (oException) {
if (oexception.name = "sintakserror") {
waspada ("Sintakser terjadi!");
} kalau tidak {
peringatan ("Terjadi kesalahan lainnya!");
}
}
Contoh operator digunakan di urutan kedua, dan kodenya adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
mencoba {
eval ("a ++ b");
} catch (oException) {
if (instance oException dari sintakserror) {
waspada ("Sintakser terjadi!");
} kalau tidak {
peringatan ("Terjadi kesalahan lainnya!");
}
}
4) Lempar Pernyataan Lemparan Pengecualian
Dalam edisi ketiga ecmascript, digunakan untuk melempar pengecualian dengan sengaja. Objek kesalahan yang dilemparkan dapat berupa string, angka, nilai boolean atau objek aktual, atau objek kesalahan (konstruktornya hanya memiliki satu fungsi, yaitu, pesan kesalahan). EG1. melempar kesalahan baru ("Terjadi kesalahan!");
EG2.
Salinan kode adalah sebagai berikut:
fungsi addTwonumber (a, b) {
if (arguments.length <2) {
Lemparkan kesalahan baru ("Dua angka perlu diteruskan!");
}
}
mencoba {
Hasil = AddTWonumber (90);
} catch (oException) {
if (instance oException dari sintakserror) {
alert ("SyntaxError:" + OException.Message);
} lain jika (oException instance of error) {
waspada (oexception.message);
}
}
Di atas adalah semua konten yang dijelaskan dalam artikel ini. Saya harap Anda bisa menyukainya.