Penjelasan terperinci tentang kaedah pengendalian pengecualian dalam pengetahuan JavaScript_Basic

WBOY
Lepaskan: 2016-05-16 15:54:31
asal
1177 orang telah melayarinya

Terdapat tiga jenis ralat pengaturcaraan: (1) Ralat sintaks dan (2) Ralat masa jalan (3) Ralat logik:
Ralat sintaks:

Ralat sintaks, juga dikenali sebagai ralat penghuraian, berlaku apabila menyusun bahasa pengaturcaraan tradisional dan muncul apabila JavaScript ditafsirkan.

Sebagai contoh, baris berikut akan menyebabkan ralat sintaks kerana tiada kurungan penutup:

<script type="text/javascript">
<!--
window.print(;
//-->
</script>

Salin selepas log masuk

Apabila ralat sintaks berlaku dalam JavaScript, hanya ralat sintaks yang terkandung dalam urutan yang sama terjejas dan kod dalam urutan lain dilaksanakan;
Ralat masa jalan:

Pelaksanaan (selepas penyusunan/tafsiran) pada ralat masa jalan, juga dikenali sebagai pengecualian, dinaikkan.

Sebagai contoh, baris berikut akan menyebabkan ralat masa jalan kerana sintaks di sini betul, tetapi pada masa jalan ia cuba memanggil kaedah yang tidak wujud:

<script type="text/javascript">
<!--
window.printme();
//-->
</script>

Salin selepas log masuk

Pengecualian juga mempengaruhi urutan yang ia berlaku, membenarkan urutan JavaScript lain untuk terus melaksanakan seperti biasa.
Ralat logik:

Ralat logik mungkin merupakan jenis ralat yang paling sukar untuk dikesan. Ralat ini bukan hasil daripada sintaks atau ralat masa jalan. Sebaliknya, apabila pepijat berlaku memandu logik skrip, anda tidak mendapat hasil yang diharapkan.

Anda mungkin tidak dapat menangkap ralat ini kerana ia bergantung pada program jenis logiknya berdasarkan keperluan perniagaan.
cuba...tangkap...akhirnya kenyataan:

Keupayaan pengendalian pengecualian ditambah dalam versi terkini JavaScript. JavaScript melaksanakan cuba...tangkap...akhirnya struktur dan operasi buang untuk mengendalikan pengecualian.

Anda boleh menangkap pengecualian yang dijana pengaturcara dan masa jalan, tetapi bukan ralat sintaks JavaScript.

Inilah percubaan...tangkap...akhirnya sekat sintaks:

<script type="text/javascript">
<!--
try {
  // Code to run
  [break;]
} catch ( e ) {
  // Code to run if an exception occurs
  [break;]
}[ finally {
  // Code that is always executed regardless of 
  // an exception occurring
}]
//-->
</script>

Salin selepas log masuk

Blok cuba mesti diikuti oleh blok tangkapan sahaja atau blok akhirnya (atau sama ada). Apabila pengecualian berlaku dalam blok cuba, pengecualian diletakkan dalam e dan blok tangkapan dilaksanakan. Pilihan akhirnya menyekat selepas pernyataan cuba/tangkap dilaksanakan tanpa syarat.
Contoh:

Di bawah ialah contoh di mana kami cuba memanggil fungsi yang tidak wujud yang akan membuang pengecualian. Mari lihat bagaimana ia berkelakuan, tanpa mencuba...tangkap:

<html>
<head>
<script type="text/javascript">
<!--
function myFunc()
{
  var a = 100;

  alert("Value of variable a is : " + a );
 
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

Salin selepas log masuk

Sekarang, mari kita cuba menangkap pengecualian ini menggunakan cuba ... tangkap dan paparkan mesej mesra pengguna. Anda juga boleh menyekat mesej ini jika anda ingin menyembunyikan ralat ini daripada pengguna.

<html>
<head>
<script type="text/javascript">
<!--
function myFunc()
{
  var a = 100;
  
  try {
   alert("Value of variable a is : " + a );
  } catch ( e ) {
   alert("Error: " + e.description );
  }
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

Salin selepas log masuk

Anda boleh menggunakan blok akhirnya untuk melaksanakan tanpa syarat selama-lamanya selepas pernyataan cuba/tangkap. Berikut ialah contoh:

<html>
<head>
<script type="text/javascript">
<!--
function myFunc()
{
  var a = 100;
  
  try {
   alert("Value of variable a is : " + a );
  }catch ( e ) {
   alert("Error: " + e.description );
  }finally {
   alert("Finally block will always execute!" );
  }
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

Salin selepas log masuk

kenyataan lontaran:

Anda boleh menggunakan pernyataan lontaran untuk meningkatkan pengecualian terbina dalam atau pengecualian tersuai anda. Kemudian pengecualian ini boleh ditangkap dan tindakan sewajarnya boleh diambil.

Berikut ialah contoh penggunaan pernyataan lontaran.

<html>
<head>
<script type="text/javascript">
<!--
function myFunc()
{
  var a = 100;
  var b = 0;
  
  try{
   if ( b == 0 ){
     throw( "Divide by zero error." ); 
   }else{
     var c = a / b;
   }
  }catch ( e ) {
   alert("Error: " + e );
  }
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

Salin selepas log masuk

Anda boleh menggunakan rentetan, integer, boolean atau objek untuk membuang pengecualian dalam fungsi, kemudian anda boleh menangkap pengecualian dalam fungsi yang sama yang kami lakukan di atas, atau gunakan percubaan...catch block dalam fungsi lain.
sintaks onerror()

Pengendali acara onerror ialah ciri pertama, yang memudahkan JavaScript mengendalikan ralat. Peristiwa ralat dicetuskan pada objek tetingkap apabila pengecualian berlaku pada halaman. Contohnya:

<html>
<head>
<script type="text/javascript">
<!--
window.onerror = function () {
  alert("An error occurred.");
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

Salin selepas log masuk

Pengendali acara onerror menyediakan tiga maklumat untuk mengetahui sifat sebenar ralat:

  1. Mesej ralat Penyemak imbas akan memaparkan mesej yang sama untuk ralat yang diberikan
  2. URL
  3. Nombor baris Nombor baris yang diberikan dalam URL yang menyebabkan ralat
Berikut ialah contoh cara mengekstrak maklumat ini

<html>
<head>
<script type="text/javascript">
<!--
window.onerror = function (msg, url, line) {
  alert("Message : " + msg );
  alert("url : " + url );
  alert("Line number : " + line );
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

Salin selepas log masuk
Boleh dipaparkan dalam apa jua cara yang anda rasa lebih baik untuk mengekstrak maklumat.

Anda boleh menggunakan kaedah onError untuk memaparkan mesej ralat tanpa sebarang masalah dalam memuatkan imej seperti berikut:

<img src="myimage.gif"
  onerror="alert('An error occurred loading the image.')" />

Salin selepas log masuk
Anda boleh menggunakan onerror untuk memaparkan maklumat yang sepadan sekiranya berlaku ralat dalam banyak teg HTML.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan