در بخش قبلی در خصوص مدیریت خطاها با استفاده از رخداد onerror صحبت
کردیم. در این بخش روش ساخت یافته تر و مدرن تری را به شما نشان خواهیم
داد که استفاده از آن به مراتب ساده تر و بسیار کارامد تر خواهد بود.
در زبانهای شیء گرا از ساختاری به نام try catch استفاده میکنیم. این
ساختار بر خلاف روش قبلی میتواند بارها در طول برنامه تکرار شود و به ازای
هر خطا، یک ساختار و کد مدیریت کننده بخصوص داشته باشد.
در این روش
ابتدا کدی را که مستعد خطا میباشد و احتمال میدهیم در زمان اجرا در آن خطا
(Exception) رخ دهد، در بلوکی به نام try مینویسیم:
try
{
adddlert("Welcome guest!")
}
سپس
در ادامه ساختاری به نام catch خواهیم آورد که این ساختار وظیفه رسیدگی
کردن به خطایی (استثنایی) را دارد که در بلوک try ماقبل نوشته شده است.
دقت
کنید که کدها موجود در قسمت Catch فقط و فقط در صورت رخ دادن خطا اجرا
میگردند و در حالت عادی اجرا نخواهند شد. علاوه بر آن هر بلوک catch تنها
به خطای بلوک try متناظر خود رسیدگی میکند و به دیگر قسمتهای برنامه کاری
ندارد.
نمونه ای از این بلوک را میتوانید ببینید:
catch(err)
{
txt="There was an error on this page.\n\n"
txt+="Click OK to continue viewing this page,\n"
txt+="or Cancel to return to the home page.\n\n"
if(!confirm(txt))
{
document.location.href="http://www.w3schools.com/"
}
}
امکان
دیگری که میتوانیم اضافه کنیم بلوکی به نام finally است. کدهای این بلوک
تحت هر شرایطی (رخ دادن یا عدم رخ دادن خطا )اجرا خواهند شد.
در صورت
عدم وجود این بلوک، میدانیم که یا قسمت try اجرا میگردد یا قسمت catch .
اما گاهی نیاز داریم در هر صورت و به طور مستقل از این دو بلوک، کدی
بنویسیم که بدون در نظر گرفتن وضعیت خطا، اجرا گردد.
finally
{
alert(“welcome to my web site”)
}
یک نمونه از کد برنامه را در زیر میبینید:
<html>
<head>
<script type="text/javascript">
var txt=""
function message()
{
try
{
adddlert("Welcome guest!")
}
catch(err)
{
txt="There was an error on this page.\n\n" + err.message
txt+="Click OK to continue viewing this page,\n"
txt+="or Cancel to return to the home page.\n\n"
if(!confirm(txt))
{
document.location.href="http://www.noorportal.net/"
}
}
finally
{
alert(“welcome to my web site”)
}
}
</script>
</head>
<body>
<input type="button" value="View message" onclick="message()" />
</body>
</html>