دستورات try و catch

می توان خطاها را با استفاده از دستور try…catch اداره کرد. بدین صورت که کدی را که احتمال می دهید ایجاد خطا کند در داخل بلوک try قرار می دهید. بلوک catch هم شامل کدهایی است که وقتی اجرا می شوند که برنامه با خطا مواجه شود. تعریف ساده ی این دو بلوک به این صورت است که بلوک try سعی می کند که دستورات را اجرا کند و اگر در بین دستورات خطایی وجود داشته باشد برنامه دستورات مربوط به بخش catch را انجام می دهد. برنامه زیر نحوه استفاده از دستور try…catch را نمایش می دهد :

  1:<?php
  2:
  3:    $five = 5;
  4:    $zero = 0;
  5:    
  6:    try                                                                    
  7:    {                                                                      
  8:        if($zero > 0  ||  $zero < 0)                                       
  9:        {                                                                  
 10:            $result = $five / $zero ;  //Error                             
 11:            echo $result;                                                  
 12:        }                                                                  
 13:        else                                                               
 14:        {                                                                  
 15:            throw new Exception('An attempt to divide by 0 was detected.');
 16:        }                                                                  
 17:    }                                                                      
 18:    catch(Exception $ex)                                                   
 19:    {                                                                      
 20:        echo 'Error : '.$ex -> getMessage();                               
 21:    }                                                                      
 22:
 23:?>

در کد بالا ما قصد داریم خطاهای احتمالی را که در عملیات تقسیم ممکن است به وجود آید را اداره کنیم. در ریاضیات عمل تقسیم عدد بر صفر ممکن نیست. در خطوط 3 و 4 دو متغیر تعریف کرده ایم که مقدار یکی از آنها 5 و دیگری 0 است. چون ممکن اس که عمل تقسیم بر صفر اتفاق افتد پس در قسمت try در خط 8 با استفاده از دستور if چک می کنیم که اگر مقدار متغیر $zero بزرگتر و یا کوچکتر از 0 باشد عملیات تقسیم انجام و نتیجه نمایش داده شود (خطوط 10 و 11) در غیر اینصورت یک استثناء ایجاد کند. از آنجاییکه مقدار متغیر $zero عدد 0 است، یک استثناء رخ می دهد. این استثناء را در خط 15 و در قسمت else می نویسیم و یک پیغام دلخواه و قابل فهم برای نمایش به کاربر می نویسیم. برای چاپ پیغام خطا در دستور catch یک نمونه از کلاس Exception ایجاد کرده (خط 18) و با فراخوانی متد getMessage() (خط 20) این کلاس آن را چاپ و به کاربر نمایش می دهیم.

لطفا اگر نظر، پیشنهاد و یا انتقادی در باره مطلب بالا دارید در قسمت زیر مطرح بفرمایید.