مدیریت خطاها در JavaScript

چاپ

دستور try، به شما اجازه می دهد تا، خطاهای یک بلاک از دستورات را تست کنید.

دستور catch، خطاهای اتفاق افتاده در قسمت try را بررسی می کند.

دستور throw، به شما اجازه می دهد تا خطاهای سفارشی ایجاد کنید.


دلیل اتفاقِ خطاها!

Wiki

زمانی که موتور JavaScript کدها را اجرا می کند، ممکن است خطاهای زیر اتفاق بیافتد:

  1. خطای املای دستورات (syntax error)، که معمولاً توسط برنامه نویس اتفاق می افتد.
  2. خطای گم شدگی خصوصیت (missing feature)، که ممکن است بخاطر تفاوت های بین مرورگرها و یا خطای املایی باشد.
  3. خطای ورودی اشتباه (wrong input)، که می تواند توسط یک کاربر باشد.

و البته این خطاها می تواند چیزهای غیرقابل پیشبینی دیگری نیز باشد.


پرتاب خطا (Throw Error)

Wiki

زمانی که خطایی اتفاق می افتد، به طور معمول، اجرای دستورات متوقف شده و یک پیغام خطا تولید می شود.

اصطلاح تکنیکی برای این عمل، عبارت throw است (به معنی پرتاب کردن، به اصطلاح یک پیغام خطا به سمت catch پرتاب می شود)


try و catch در JavaScript

Wiki

عبارت try، به شما اجازه می دهد تا، خطاهای یک بلاک از دستورات را تست کنید.

اگر خطایی در قسمت try اتفاق بیافتد، دستورات تعریف شده در قسمت catch اجرا می شوند. (catch به معنی گرفتن، به اصطلاح خطاهای پرتاب شده از قسمت try در قسمت catch گرفته می شوند)

try و catch ها همیشه جفت جفت می آیند.

نحوه استفاده

try
  {
  //Run some code here
  }
catch(err)
  {
  //Handle errors here
  }

مثال

در مثال زیر، در قسمت try، عمداً یک خطای املایی ایجاد کرده ایم.

قسمت catch خطایی که در try اتفاق افتاده را می گیرد و پیغام مناسب را چاپ می کند:

مثال (مدیریت خطاها در JavaScript)

<!DOCTYPE html>
<html>
<head>
<script>
var txt="";
function message()
{
try
  {
  adddlert("Welcome guest!");
  }
catch(err)
  {
  txt="There was an error on this page.\n\n";
  txt+="Error description: " + err.message + "\n\n";
  txt+="Click OK to continue.\n\n";
  alert(txt);
  }
}
</script>
</head>

<body>
<input type="button" value="View message" onclick="message()">
</body>

</html>
خودتان امتحان کنید »

دستور throw

Wiki

دستور throw، به شما اجازه می دهد تا خطاهای سفارشی ایجاد کنید.

اصطلاح تکنیکی صحیح برای ایجاد خطا: عبارت "throw an exception" است.

دستور throw باید همراه try و catch استفاده شود.

نحوه استفاده

throw exception

exception می تواند یک رشته، یک عدد، یک داده Boolean و یا یک Object باشد.

مثال

این مثال، مقدار ورودی متغیر را تست می کند. اگر مقدار اشتباه باشد، یک خطا (exception) به سمت catch پرتاب (throw) می شود. قسمت catch خطا را می گیرد و پیغام مناسب را چاپ می کند.

مثال (مدیریت خطاها در JavaScript)

<script>
function myFunction()
{
try
  {
  var x=document.getElementById("demo").value;
  if(x=="")    throw "empty";
  if(isNaN(x)) throw "not a number";
  if(x>10)     throw "too high";
  if(x<5)      throw "too low";
  }
catch(err)
  {
  var y=document.getElementById("mess");
  y.innerHTML="Error: " + err + ".";
  }
}
</script>

<h1>My First JavaScript</h1>
<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="mess"></p>
خودتان امتحان کنید »

توجه داشته باشید که در مثال بالا اگر در تابع getElementById مشکلی رخ دهد، خطای مناسب با آن پرتاب (throw) خواهد شد.