عبارت try/catch/finally در JavaScript

تعریف و استفاده

عبارت try/catch/finally خطاهای ممکن در بلوک کد را مدیریت می‌کند، در حالی که کد همچنان اجرا می‌شود.

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

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

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

دستور finally به شما اجازه می‌دهد که کدی را در پس از try و catch اجرا کنید، بدون توجه به نتیجه.

توضیح:دستورات catch و finally اختیاری هستند، اما در هنگام استفاده از دستور try یکی از آنها باید استفاده شود (اگر نه هر دو).

نکته:وقتی خطایی رخ می‌دهد، JavaScript معمولاً متوقف می‌شود و پیام خطا را تولید می‌کند. از دستور throw برای ایجاد خطاهای سفارشی (تخلف‌های ایجاد شده) استفاده کنید. اگر throw با try و catch استفاده شود، می‌توانید جریان برنامه را کنترل کنید و پیام خطای سفارشی تولید کنید.

برای اطلاعات بیشتر در مورد خطاهای JavaScript، آموزش خطاهای JavaScript را مطالعه کنید.

مثال

در این مثال، ما در کد (در بلوک try) خطا کردیم.

این مثال باید پیام "Welcome guest!" را نشان دهد، اما خطای املایی alert وجود دارد.

بلوک catch خطاها را می‌گیرد و کدی را برای مدیریت آن اجرا می‌کند:

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
try {
  adddlert("Welcome guest!");
}
catch(err) {
  document.getElementById("demo").innerHTML = err.message;
}
</script>
</body>
</html>

به طور مستقیم امتحان کنید

در پایین صفحه مثال‌های بیشتری از TIY وجود دارد.

نحوه استفاده

try {
  tryCode - بلوک کدی که باید امتحان شود
}
catch(err) {
  catchCode - بلوک کدی که برای مدیریت خطا استفاده می‌شود
} 
finally {
  finallyCode - بلوک کدی که بدون توجه به نتیجه try / catch باید اجرا شود
}

ارزش پارامتر

پارامتر توضیح
tryCode ضروری. بلوک کدی که باید در هنگام اجرا خطا را تست کند.
err ضروری، اگر با catch استفاده شود. متغیر محلی مرتبط با خطا را مشخص کنید. این متغیر می‌تواند به شیء Error مراجعه کند (که شامل اطلاعات مربوط به خطا است، مانند پیام "'addlert' is not defined"). اگر خطا توسط دستور throw ایجاد شده باشد، این متغیر به شیء مشخص شده در دستور throw اشاره دارد (لطفاً به "مثال‌های بیشتر" مراجعه کنید).
catchCode اختیاری. اگر در بلوک try خطایی رخ دهد، بلوک کدی که باید اجرا شود. اگر خطایی رخ ندهد، این بلوک کد هرگز اجرا نخواهد شد.
finallyCode اختیاری. هرچند که نتیجه try / catch چگونه باشد، بلوک کد که باید اجرا شود.

جزئیات فنی

نسخه JavaScript: ECMAScript 3

مثال‌های بیشتر

مثال

این مثال ورودی را بررسی می‌کند. اگر مقدار اشتباه باشد، خطای (err) را پرتاب می‌کند.

catch عبارت خطایی (err) را می‌گیرد و پیام خطای سفارشی را نمایش می‌دهد:

<!DOCTYPE html>
<html>
<body>
<p>لطفاً عددی بین 5 و 10 وارد کنید:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">Test Input</button>
<p id="message"></p>
<script>
function myFunction() {
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try { 
    if(x == "") throw "is Empty";
    if(isNaN(x)) throw "not a number";
    if(x > 10) throw "too high";
    if(x < 5) throw "too low";
  }
  catch(err) {
    message.innerHTML = "Input " + err;
  }
}
</script>
</body>
</html>

به طور مستقیم امتحان کنید

مثال

finally 语句让你在 try و catch بعد از اجرای کد، بدون توجه به نتیجه انجام دهید:

function myFunction()
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try { 
    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) {
    message.innerHTML = "Error: " + err + ".";
  }
  finally {
    document.getElementById("demo").value = "";
  }
}

به طور مستقیم امتحان کنید

پشتیبانی مرورگر

جمله Chrome IE Firefox Safari Opera
try/catch/finally پشتیبانی پشتیبانی پشتیبانی پشتیبانی پشتیبانی

صفحات مرتبط

آموزش JavaScript:اشکال JavaScript

دستورالعمل JavaScript:عبارت throw در JavaScript