Mari kita lihat contoh dahulu
<input id='b1' type='button' value='按钮'/> <script> window.onload=function(){ var oBtn=document.getElementById("b1"); function mto(){ alert("123"); }; try //非IE { oBtn.attachEvent("onclick",mto,false); } catch(e)//IE { oBtn.addEventListener("click",mto,false); } }; </script>
Nota:
Perbezaan antara addEventListener dan attachEvent ialah parameter pertama yang pertama ialah klik dan yang kedua ialah onclick
addEventListener berjalan dalam skop elemen elemennya
attachEvent berjalan dalam skop global (this=window)
Cuba...Tangkap kenyataan
cuba...tangkap boleh menguji ralat dalam kod anda. Bahagian cuba mengandungi kod yang perlu dijalankan, manakala bahagian tangkapan mengandungi kod yang dijalankan apabila ralat berlaku.
Sintaks:
try { //在此运行代码 } catch(err) { //在此处理错误 }
Nota: gunakan huruf kecil untuk mencuba...tangkap. Huruf besar akan menjadi salah.
cuba...tangkap...akhirnya kenyataan
Laksanakan pengendalian ralat untuk JScript .
try { tryStatements} catch(exception){ catchStatements} finally { finallyStatements}
============== ===========
Parameter
Pilihan yang diperlukan. Pernyataan yang salah mungkin berlaku.
pengecualian
Pilihan yang diperlukan. sebarang nama pembolehubah. Nilai permulaan pengecualian ialah nilai ralat yang dilemparkan.
catchStatement
Pilihan. Pernyataan yang mengendalikan ralat yang berlaku dalam tryStatement yang berkaitan.
akhirnyaPenyata
Pilihan. Pernyataan yang dilaksanakan tanpa syarat selepas semua proses lain berlaku.
Penerangan
Pernyataan cuba...tangkap...akhirnya menyediakan cara untuk mengendalikan beberapa atau semua ralat yang mungkin berlaku dalam blok kod tertentu sambil mengekalkan kod berjalan. Jika ralat berlaku yang tidak dikendalikan oleh pengaturcara, JScript hanya menyediakan mesej ralat biasa kepada pengguna, seolah-olah tiada pengendalian ralat.
Parameter
Contoh
try { print("Outer try running.."); try { print("Nested try running..."); throw "an error"; } catch(e) { print("Nested catch caught " + e); throw e + " re-thrown"; } finally { print("Nested finally is running..."); } } catch(e) { print("Outer catch caught " + e); } finally { print("Outer finally running"); } // Windows Script Host 作出该修改从而得出 WScript.Echo(s) function print(s){ document.write(s); }
Bersarang cuba lari...
Tangkapan bersarang yang ditangkap mendapat ralat
Nested akhirnya berjalan...
Tangkapan luar yang ditangkap mendapat ralat yang dilemparkan semula
Luar akhirnya berjalan
var array = null; try { document.write(array[0]); } catch(err) { document.writeln("Error name: " + err.name + ""); document.writeln("Error message: " + err.message); } finally{ alert("object is null"); }
Proses pelaksanaan program
1. Memandangkan tatasusunan tidak dibuat apabila tatasusunan[0] digunakan, tatasusunan ialah objek kosong yang memanggil tatasusunan[0] dalam atur cara akan menghasilkan objek adalah pengecualian nol
2. Pernyataan catch(err) menangkap pengecualian ini dan mencetak jenis ralat melalui err.name dan err.message mencetak butiran ralat
3. akhirnya serupa dengan java akhirnya, ia akan dilaksanakan tanpa mengira sama ada terdapat pengecualian atau tidak.
Sekarang ringkaskan maklumat yang sepadan dengan enam nilai Error.name:
1. EvalError: Penggunaan eval() tidak konsisten dengan definisi
2. RangeError: Nilai di luar sempadan
3. ReferenceError: Nilai rujukan yang tidak sah atau tidak diiktiraf
4. SyntaxError: Ralat penghuraian sintaks berlaku
5. TypeError: Jenis operan salah
6. Ralat URI: Penggunaan fungsi pemprosesan URI yang tidak betul