دستورات مقدماتی Java Script
ساختار دستوری try ... catch :
در برنامه نويسی و طراحی صفحات وب ، گاهی اوقات ممکن است خطاهايي رخ دهد . اين خطاها
می تواند دلايل مختلفی داشته باشد ، از قبيل :
- اشتباه تايپی در متن دستورات صفحه از سوی طراح صفحه .
- واردنمودن اطلاعات اشتباه يا نادرست از سوی کاربر .
- انواع خطاهای ممکن زمان اجرای مرورگر .
اگر کاربر که در حال مشاهده يک صفحه است ، در هنگام کار با خطا مواجه شود و عملا راهی
برای رفع آن اشکال برايش وجود نداشته باشد ، مطمًننا از ادامه مشاهده و کار با صفحه
صرف نظر خواهد کرد . اين وظيفه برنامه نويس است که با برنامه ريزی صحيح ، خطاهای احتمالی
را پيدا کرده و راه حل های مناسب را برای آنها طراحی کند .
از ساختار کنترلی try ... catch در جاوا اسکريپت ، برای پيدا کردن خطاها و error های
احتمالی و تعيين اقدامات اصلاحی در صورت بروز خطا ، استفاده می شود .
اين ساختار از 2 بخش try و catch تشکيل شده است . کد اصلی برنامه که می خواهيم اجرا
شود و احتمال می دهيم دارای خطا باشد ، را در قسمت try قرار داده و اقدامات اصلاحی
را که می خواهيم در صورت بروز خطا انجام شود ، را در قسمت catch می گذاريم .
برنامه در هنگام رسيدن به ساختار ، دستورات قسمت try را انجام می دهد و در صورت مواجه
با خطا در دستورات ، بخش catch را اجرا خواهد کرد .
نکته مهم : در صورت عدم برخورد با خطا ، دستورات قسمت catch به هيچ
وجه اجرا نخواهد شد .
نکته مهم 2 : در قسمت catch ، می توان در پرانتز مقابل واژه کليدی
catch ، يک عبارت يا متغير تعريف کرد ، که اين متغير خصوصيات error به وجود آمده را
در خود نگهداری کرد . يکی از اين خواص ، شرح يا description خطا است ، که می توان به
شکلی که در مثال 2 نشان داده شده است ، به شرح خطا دسترسی داشته و آنرا به کاربر اطلاع
داد .
شکل کلی تعريف يک ساختار try ... catch به صورت زير است :
try
{
دستورات مورد نظر برای اجرا که احتمال خطا دارد
}
catch ( نام يک متغير )
{
اقدامات اصلاحی مورد نظر در صورت وقوع خطا
}
مثال 1 : در مثال زير ، يک تابع به نام show_error
قرار داده شده است . اين تابع توسط دکمه فرمان click me فراخوانی شده و قصد دارد تا
يک پيغام خوش آمد به کاربر اعلام کند . اما در متن دستور يک اشتباه تايپی وجود دارد
و آن اينکه به جای عبارت documnet.write ، نوشته شده است document.wriet ، به همين
دليل پيغام خروجی چاپ نشده و در صفحه error رخ می دهد . اگر دقت کنيد در نوار پايين
مرورگر ( Status Bar ) علامت Error on page قرار گرفته است . برای مشاهده error ، بر
روی آيکون خطا کليک کنيد . در اينجا به دليل عدم پيش بينی خطا هيچ واکنشی از سوی مرورگر
انجام نمی شود :
مثال 1 : در مثال زير ، تابع show_error2
قرار داده شده است . اين تابع نيز همانند تابع قبلی می خواهد يک پيام خوش آمد به کاربر
اعلام کند . اين تابع نيز دارای اشتباه تايپی در دستور document.write است ، با اين
تفاوت که با ساختار try ... catch قرار داده شده ، تعيين شده است در صورت بروز خطا
يک پيام هشدار به کاربر اعلام شود . توسط متغير err که در پرانتز مقابل واژه کليدی
catch تعريف شده است ، متن پيام error در خاصيت description ذخيره شده و سپس به کاربر
اعلام می شود . به کد مثال دقت کنيد :
دستور throw :
توسط دستور throw در جاوا اسکريپت می توان يک خطايابی کامل تر را انجام داد . با استفاده
از اين دستور به همراه ساختار try ... catch ، می توان روند اجرای برنامه و بروز خطا
را کاملا تحت کنترل داشت و يک پيغام خطا دقيق طراحی کرد .
نکته : دستور throw به تنهايي کاربردی نداشته و بايد آنرا با ساختار
دستوری try ... catch به کار برد .
در مثال زير سعی شده است ، تا چگونگی استفاده از يک دستور throw را در قالب ساختار
try ... catch توضيح داد .
مثال : در مثال زير يک اسکريپت ساده برای دريافت ورودی از کاربر طراحی
شده است . تابع Enter_Num که توسط دکمه فرمان Enter Number
فراخوانی می شود ، در ابتدا يک کادر متن برای دريافت ورودی از کاربر ، نمايش می دهد
. مقدار دريافتی از کاربر در متغير Num ذخيره می شود . سپس
در يک ساختار try ... catch ، مقدار دريافتی از کاربر بررسی می شود .
در حالت اول ، چنانچه کاربر مقداری را در کادر وارد نکرده و آنرا خالی ارسال کرده باشد
، برنامه خطای 1 را شناسايي و يک پيام هشدار مبنی بر وارد کردن عدد نمايش داده و سپس
مجددا تابع Enter_Num را برای دريافت مقدار صحيح اجرا می کند
. در حالت دوم اگر کاربر عددی بزرگتر از 100 را وارد کرده باشد ، برنامه خطای دوم را
شناسايي کرده و يک پيغام هشدار مبنی بر بزرگ بودن عدد وارده را نمايش داده و مجددا
تابع Enter_Num را اجرا می کند . به کد مثال و نحوه استفاده
از دستور throw دقت کنيد :