دستور try/catch/finally
مثال (دستور try/catch/finally)
در این مثال یک خطای تایپی ایجا کرده ایم.این خطا در بلوک try وجد دارد.
در این مثال قصد داریم به وسیله ی دستور alert یک پیغام را نشان دهیم، اما دستور alert را درست تایپ نکرده ایم.
بلوک catch، در مثال زیر error را دریافت می کند و یک کد را برای به نمایش در آوردن آن اجرا می کند:
<html>
<body>
<p id="demo"></p>
<script>
try {
adddlert("Welcome guest!");
}
catch(err) {
document.getElementById("demo").innerHTML = err.message;
}
</script>
</body>
</html>
خودتان امتحان کنید »
در انتهای این صفحه، مثال های بیشتری آورده شده است.
تعریف و کاربرد
دستور try/catch/finally هنگامی که کد در حال اجراست،یک یا چند error را که ممکن است در یک بلوک کد رخ دهد مشخص می کند.
error ها می توانند، خطاهایی باشند که توسط برنامه نویس ایجاد شده اند یا در قسمت اطلاعات ورودی ایجاد شده اند یا هر error پیش بینی نشده دیگری.
دستور try به شما اجازه می دهد تا یک بلوک از کدها را برای اینکه هنگام اجرا تست شوند انتخاب کنید.
دستور catch، اگر که یک error در دستور try ایجاد شود، به شما این امکان را می دهد که یک قطعه کد برای اجرا شدن را تعریف کنید.
دستور finally به شما اجازه می دهد که بدون در نظر گرفتن نتیجه، بعد از try و catch، کدهایی را اجرا کنید.
نکته: دستور catch و دستور finally هر دو اختیاری هستند اما وقتی که از دستور try استفاده می کنیم باید حداقل یکی از این دو دستور را نیز استفاده کنیم.
نکته: هنگامی که یک error رخ می دهد، جاوااسکریپت به طور معمول متوقف می شود، و یک پیغام خطا را تولید می کند.از دستور throw برای ساختن یک error شخصی استفاده کنید.اگر از throw در کنار try و catch استفاده کنید، می توانید گردش برنامه را کنترل کنید و پیغام های خطای شخصی خود را ایجاد کنید.
پشتیبانی مرورگرها
دستور | |||||
---|---|---|---|---|---|
try/catch/finally | بله | بله | بله | بله | بله |
نحوه استفاده
tryCode - Block of code to try
}
catch(err) {
catchCode - Block of code to handle errors
}
finally {
finallyCode - Block of code to be executed regardless of the try / catch result
}
مقادیر پارامترها
پارامتر | توضیحات |
---|---|
tryCode | ضروری.بلوک کدی را مشخص می کند که باید برای یافتن error ها هنگام اجرا تست شود. |
err |
در صورتی که با دستور catch استفاده شود ضروری است.یک متغیر محلی را مشخص می کند که error درون آن قرار می گیرد .این متغیر می تواند به شیء error رجوع کند .شیء error در بردارنده ی اطلاعاتی در مورد error است.در صورتی که اررور یابی با دستور throw ایجاد شده باشد،متغیر به شیء تعریف شده در throw رجوع می کند. |
catchCode |
اگر که یک error در بلوک try رخ دهد، این قطه کد اجرا خواهد شد.اگر که هیچ error ی وجد نداشته باشد، این کد هرگز اجرا نخواهد شد . |
finallyCode |
.کدی را مشخص می کند که بدون در نظر گرفتن try و catch اجرا می شود.اختیاری |
جزئیات تکنیکی
نسخه JavaScript | 1.4 |
---|
مثال - خودتان امتحان کنید
مثال (دستور try/catch/finally)
این مقال مقدار ورودی را ارزیابی می کند. در صورتی که این مقدار اشتباه باشد یک error ایجاد خواهد شد.
error تولید شده به وسیله ی catch گرفته می شود و سپس یک error(پیغام) به نمایش در می آید:
<html>
<body>
<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="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>
خودتان امتحان کنید »
مثال (دستور try/catch/finally)
دستور finally به شما اجازه می دهد که بعد از try و catch بدون در نظر گرفتن نتیجه، کدهایی را اجرا کنید.
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 = "";
}
}
خودتان امتحان کنید »
آموزش های مرتبط
آموزش جاوا اسکریبت: JavaScript Errors
مرجع جاوا اسکریبت: JavaScript throw Statement
- نوشته شده توسط احسان عباسی
- بازدید: 8977