PDA

View Full Version : سوال کلی در مورد try catch



barname_newis
سه شنبه 14 مرداد 1393, 12:47 عصر
سلام دوستان خسته نباشید
یه سوال کلی دارم
میخواستم بدونم از ساختار try catch چه مواقعی استفاده میشه؟ من تو پروژه های بزرگ زیاد دیدم که از این دستور استفاده میشه ولی راستش فرق بین این دستور و دستور if رو نفهمیدم
لطفا دقیق بفرمایید که این دستورات چه فرقی با هم دارن و در چه مواقعی باید از این دستور استفاده کنیم؟
ممنون

kazemimorteza
سه شنبه 14 مرداد 1393, 14:53 عصر
مرد حسابی ایف چه ربطی داره به ترای و کچ.
try و کچ برای کنترل خطا هست.مثلا میگن وقتی که خطای تقسیم بر صفر در سیستم عامل ویندوز اون اولا که اومده بود پیش بینی نشده بود وقتی که در محیط کامند یک عدد را تقسیم بر صفر می کردید سیبستم هنگ میکر د یا ریست می شد هم چین چیزی.

kazemimorteza
سه شنبه 14 مرداد 1393, 15:10 عصر
حالا تو زبان های برنامه نویسی یرای کنترل خطا یا exception handling در روند اجرای برنامه از tryو catch استفاده میشه.سوالت سرکاریه؟ if برای مقایسه می باشد.

برای مدیریت خطا در php از دو کلمه کلیدی try و catch استفاده می شود.
و این موضوع در فریم ورک yii نیز صادق است .
و برای این کار بصورت زیر عمل می کنیم :



function calculate($id)
{
try{
if(isset($id)){
//my code
}
else{
throw new Exception(“My message”);
}

}
catch(Exception $e){
echo $e->getMessage();
}
}//end of function



حالا در کد بالا اگر if ما برقرا نباشه میر ه به else و در اونجا با کد زیر


throw new Exception(“My message”);

میریم به catch ودر اونجا پیام ما نشون داده میشه.
کار اصلی اینه که اونجا نوشته
//my code
اگه خطای مهلکی رخ داد با سیستم try و catch این خطا کنترل میشه و به قسمت catch میریم و نمی زاره این سیستم application شما را مورد تاثیرر قرار بده .البته میتونی تو قسمت catch هیج چیزی نشون ندی و گزازش خطا را در بانک ذخیره کنی ، حالا هرچی.
تفاوت در یی با php :



function calculate($id)
{
try{
if(isset($id)){
//my code
}
else{
throw new CHttpException(404,"درخواست شما نامعتبر");
}

}
catch(Exception $e){
echo $e->getMessage();
}
}//end of function

barname_newis
چهارشنبه 15 مرداد 1393, 09:39 صبح
باید بگم واقعا برات متاسفم !
کسایی که چند ساله تو انجمن دارن کار میکنن و زحمت میکشن اندازه تو که کاربر تازه کار هستی ادعا ندارن !
امثالی مثل شما باعث خجالت همه هستن
متاسفم برات

s.karim
چهارشنبه 15 مرداد 1393, 09:50 صبح
دوست عزیز Try - catch برای کنترل خطاهای غیر قابل پیش بینی بکار میره
یه سری خطا ها هستن که موقع کد نویسی به ذهن آدم میرسه مثل این:

if (!string.IsNullOrEmpty(item))
{
// my code...
}

در این حالت ما حدس زدیم که ممکنه آیتم مورد نظر ما خالی باشه واسه همین با if ، خالی بودنشو کنترل کردیم

ولی یه سری از مواقع هست که ما هنوز خطاهای ممکن رو پیش بینی نکردیم واسه همین یه try-catch میزاریم که دیگه خیالمون راحت باشه که برنامه موقع اجرا خطای اضافه به کاربر نشون نمیده و هم اینکه می تونیم متن خطای ایجاد شده رو در هنگام اجرای برنامه برای خودمون به نمایش بدیم یا اینکه اونو یه جای دیگه کاربر نبینه ذخیرش کنیم تا بتونیم براحتی دیباگش کنیم.

kazemimorteza
چهارشنبه 15 مرداد 1393, 12:10 عصر
باید بگم واقعا برات متاسفم !
کسایی که چند ساله تو انجمن دارن کار میکنن و زحمت میکشن اندازه تو که کاربر تازه کار هستی ادعا ندارن !
امثالی مثل شما باعث خجالت همه هستن
متاسفم برات
واقعا عذر خواهی می کنم شرمنده ببخشید.منظوری نداشتم.بابا من با لحن شوخی نوشتم .من خیلی شوخی میکنم شرمنده.من از همه عذر خواهی می کنم ببخشید. واقعا ببخشید.شرمند. من بیست وچهار ساعته به انجمن سر نزدم و گرنه زودتر از همه عذر خواهی می کردم.تالار برنامه نویسی یکی از بهترین جاهاست بدین دلیل که اساتید مجربی دارن فعالیت می کنند.و خیلی موثر و کارا به من کمک کردند.شرمنده شدم وقتی ناراحتی شما را دیدم. منا ببخشید.:بوس::قلب:
امیدوارم از ته دل منا ببخشید.من قصدم کمک بود.