# زبان های اسکریپتی > PHP >  سوال کلی در مورد try catch

## barname_newis

سلام دوستان خسته نباشید
یه سوال کلی دارم
میخواستم بدونم از ساختار try catch چه مواقعی استفاده میشه؟ من تو پروژه های بزرگ زیاد دیدم که از این دستور استفاده میشه ولی راستش فرق بین این دستور و دستور if رو نفهمیدم
لطفا دقیق بفرمایید که این دستورات چه فرقی با هم دارن و در چه مواقعی باید از این دستور استفاده کنیم؟
ممنون

----------


## kazemimorteza

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

----------


## kazemimorteza

حالا تو زبان های برنامه نویسی یرای کنترل خطا یا 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

باید بگم واقعا برات متاسفم !
کسایی که چند ساله تو انجمن دارن کار میکنن و زحمت میکشن اندازه تو که کاربر تازه کار هستی ادعا ندارن ! 
امثالی مثل شما باعث خجالت همه هستن 
متاسفم برات

----------


## s.karim

دوست عزیز Try - catch برای کنترل خطاهای غیر قابل پیش بینی بکار میره
یه سری خطا ها هستن که موقع کد نویسی به ذهن آدم میرسه مثل این:
  if (!string.IsNullOrEmpty(item))
                {
                   // my code...
                }
در این حالت ما حدس زدیم که ممکنه آیتم مورد نظر ما خالی باشه واسه همین با if ، خالی بودنشو کنترل کردیم

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

----------


## kazemimorteza

> باید بگم واقعا برات متاسفم !
> کسایی که چند ساله تو انجمن دارن کار میکنن و زحمت میکشن اندازه تو که کاربر تازه کار هستی ادعا ندارن ! 
> امثالی مثل شما باعث خجالت همه هستن 
> متاسفم برات


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

----------

