ساختار دستوری 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 ، بر روی آيکون خطا کليک کنيد . در اينجا به دليل عدم پيش بينی خطا هيچ واکنشی از سوی مرورگر انجام نمی شود :
Example
< script type="text/javascript" >
function show_error()
{
document.wriet ( "Welcome User!" ) ;
}
< /script >
< input type="button" id="Button1" value="click me !" onclick="show_error()" /> کد
خروجی
مثال 1 : در مثال زير ، تابع show_error2 قرار داده شده است . اين تابع نيز همانند تابع قبلی می خواهد يک پيام خوش آمد به کاربر اعلام کند . اين تابع نيز دارای اشتباه تايپی در دستور document.write است ، با اين تفاوت که با ساختار try ... catch قرار داده شده ، تعيين شده است در صورت بروز خطا يک پيام هشدار به کاربر اعلام شود . توسط متغير err که در پرانتز مقابل واژه کليدی catch تعريف شده است ، متن پيام error در خاصيت description ذخيره شده و سپس به کاربر اعلام می شود . به کد مثال دقت کنيد :
Example
< script type="text/javascript" >
function show_error2 ( )
{
try
{
document.wriet ( "Welcome User!" ) ;
}
catch ( err )
{
alert ( "There was an error on this page . \n\n" + "Error Description : " + err.description +"\n\nClick Ok for continue" ) ;
}
}
< /script >
< input type="button" id="btnclick2" value="click me ! to see error report" onclick="show_error( )" /> کد
خروجی
دستور throw :
توسط دستور throw در جاوا اسکريپت می توان يک خطايابی کامل تر را انجام داد . با استفاده از اين دستور به همراه ساختار try ... catch ، می توان روند اجرای برنامه و بروز خطا را کاملا تحت کنترل داشت و يک پيغام خطا دقيق طراحی کرد .
نکته : دستور throw به تنهايي کاربردی نداشته و بايد آنرا با ساختار دستوری try ... catch به کار برد .
در مثال زير سعی شده است ، تا چگونگی استفاده از يک دستور throw را در قالب ساختار try ... catch توضيح داد .
مثال : در مثال زير يک اسکريپت ساده برای دريافت ورودی از کاربر طراحی شده است . تابع Enter_Num که توسط دکمه فرمان Enter Number فراخوانی می شود ، در ابتدا يک کادر متن برای دريافت ورودی از کاربر ، نمايش می دهد . مقدار دريافتی از کاربر در متغير Num ذخيره می شود . سپس در يک ساختار try ... catch ، مقدار دريافتی از کاربر بررسی می شود .
در حالت اول ، چنانچه کاربر مقداری را در کادر وارد نکرده و آنرا خالی ارسال کرده باشد ، برنامه خطای 1 را شناسايي و يک پيام هشدار مبنی بر وارد کردن عدد نمايش داده و سپس مجددا تابع Enter_Num را برای دريافت مقدار صحيح اجرا می کند . در حالت دوم اگر کاربر عددی بزرگتر از 100 را وارد کرده باشد ، برنامه خطای دوم را شناسايي کرده و يک پيغام هشدار مبنی بر بزرگ بودن عدد وارده را نمايش داده و مجددا تابع Enter_Num را اجرا می کند . به کد مثال و نحوه استفاده از دستور throw دقت کنيد :
Example
< script type="text/javascript" >
function Enter_Num ( )
{
var Num = prompt ( "Enter a number please : " , "" ) ;
try
{
if ( !Num )
throw "Error1"
else if ( Num > 100 )
throw "Error2"
}
catch ( er )
{
if ( er == "Error1" )
{
alert ( "Plese enter a number !" ) ;
Enter_Num ( ) ;
}
if ( er == "Error2" )
{
alert ( "Number too big . Enter a smaller number !" ) ;
Enter_Num( ) ;
}
}
}
< /script >
< input type="button" id="BtnEnter" value="Enter Number " onclick="Enter_Num( )" />
در برنامه نويسی و طراحی صفحات وب ، گاهی اوقات ممکن است خطاهايي رخ دهد . اين خطاها می تواند دلايل مختلفی داشته باشد ، از قبيل :
- اشتباه تايپی در متن دستورات صفحه از سوی طراح صفحه .
- واردنمودن اطلاعات اشتباه يا نادرست از سوی کاربر .
- انواع خطاهای ممکن زمان اجرای مرورگر .
از ساختار کنترلی 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 ، بر روی آيکون خطا کليک کنيد . در اينجا به دليل عدم پيش بينی خطا هيچ واکنشی از سوی مرورگر انجام نمی شود :
Example
< script type="text/javascript" >
function show_error()
{
document.wriet ( "Welcome User!" ) ;
}
< /script >
< input type="button" id="Button1" value="click me !" onclick="show_error()" /> کد
خروجی
مثال 1 : در مثال زير ، تابع show_error2 قرار داده شده است . اين تابع نيز همانند تابع قبلی می خواهد يک پيام خوش آمد به کاربر اعلام کند . اين تابع نيز دارای اشتباه تايپی در دستور document.write است ، با اين تفاوت که با ساختار try ... catch قرار داده شده ، تعيين شده است در صورت بروز خطا يک پيام هشدار به کاربر اعلام شود . توسط متغير err که در پرانتز مقابل واژه کليدی catch تعريف شده است ، متن پيام error در خاصيت description ذخيره شده و سپس به کاربر اعلام می شود . به کد مثال دقت کنيد :
Example
< script type="text/javascript" >
function show_error2 ( )
{
try
{
document.wriet ( "Welcome User!" ) ;
}
catch ( err )
{
alert ( "There was an error on this page . \n\n" + "Error Description : " + err.description +"\n\nClick Ok for continue" ) ;
}
}
< /script >
< input type="button" id="btnclick2" value="click me ! to see error report" onclick="show_error( )" /> کد
خروجی
دستور throw :
توسط دستور throw در جاوا اسکريپت می توان يک خطايابی کامل تر را انجام داد . با استفاده از اين دستور به همراه ساختار try ... catch ، می توان روند اجرای برنامه و بروز خطا را کاملا تحت کنترل داشت و يک پيغام خطا دقيق طراحی کرد .
نکته : دستور throw به تنهايي کاربردی نداشته و بايد آنرا با ساختار دستوری try ... catch به کار برد .
در مثال زير سعی شده است ، تا چگونگی استفاده از يک دستور throw را در قالب ساختار try ... catch توضيح داد .
مثال : در مثال زير يک اسکريپت ساده برای دريافت ورودی از کاربر طراحی شده است . تابع Enter_Num که توسط دکمه فرمان Enter Number فراخوانی می شود ، در ابتدا يک کادر متن برای دريافت ورودی از کاربر ، نمايش می دهد . مقدار دريافتی از کاربر در متغير Num ذخيره می شود . سپس در يک ساختار try ... catch ، مقدار دريافتی از کاربر بررسی می شود .
در حالت اول ، چنانچه کاربر مقداری را در کادر وارد نکرده و آنرا خالی ارسال کرده باشد ، برنامه خطای 1 را شناسايي و يک پيام هشدار مبنی بر وارد کردن عدد نمايش داده و سپس مجددا تابع Enter_Num را برای دريافت مقدار صحيح اجرا می کند . در حالت دوم اگر کاربر عددی بزرگتر از 100 را وارد کرده باشد ، برنامه خطای دوم را شناسايي کرده و يک پيغام هشدار مبنی بر بزرگ بودن عدد وارده را نمايش داده و مجددا تابع Enter_Num را اجرا می کند . به کد مثال و نحوه استفاده از دستور throw دقت کنيد :
Example
< script type="text/javascript" >
function Enter_Num ( )
{
var Num = prompt ( "Enter a number please : " , "" ) ;
try
{
if ( !Num )
throw "Error1"
else if ( Num > 100 )
throw "Error2"
}
catch ( er )
{
if ( er == "Error1" )
{
alert ( "Plese enter a number !" ) ;
Enter_Num ( ) ;
}
if ( er == "Error2" )
{
alert ( "Number too big . Enter a smaller number !" ) ;
Enter_Num( ) ;
}
}
}
< /script >
< input type="button" id="BtnEnter" value="Enter Number " onclick="Enter_Num( )" />