۱۳۹۶ بهمن ۰۸, ۰۷:۱۶ ب.ظ
با سلام
من چند روز میخواستم بجای بررسی خطا های و استثناهای به شکل قدیمی در کلاسها ، از مدیریت خطای خود php که همون exception هاست استفاده کنم
اما متوجه یه نکته ای شدم حالا نمیدونم درست میگم یا خیر
در زبان هایی مثل جاوا و سی شارپ وقتی یک استثنا در بلوک try ایجاد میشه بخش catch وارد عمل میشه ولی تو php یکم قضیه فرق میکنه
توی php حتما باید استثنا یا خطا رو خودمون پیگیری کنیم و برای اون از throw استفاده کنیم
واسه اینکه متوجه بشیم یک مثال میزنم
کد زیر در زبان php رو در نظر بگیرید :
وقتی این کد رو اجرا میکنیم try catch عمل نمیکنه تا زمانیکه کد به شکل زیر دربیاد
یعنی باید حتما خودمون استثانا رو پیدا و واسه اون throw تعریف کنیم
در حالیکه در زبان های دیگه مثل جاوا داریم
اگر قرار باشه برنامه نویس از تمام استثناها اطلاع داشته باشه که تو خود کدنویسی جلوی اونها رو میگیره دیگه چه کاری هست که بخوایم از exception ها استفاده کنیم
مثال بالا بدون مدیریت exception
من چند روز میخواستم بجای بررسی خطا های و استثناهای به شکل قدیمی در کلاسها ، از مدیریت خطای خود php که همون exception هاست استفاده کنم
اما متوجه یه نکته ای شدم حالا نمیدونم درست میگم یا خیر
در زبان هایی مثل جاوا و سی شارپ وقتی یک استثنا در بلوک try ایجاد میشه بخش catch وارد عمل میشه ولی تو php یکم قضیه فرق میکنه
توی php حتما باید استثنا یا خطا رو خودمون پیگیری کنیم و برای اون از throw استفاده کنیم
واسه اینکه متوجه بشیم یک مثال میزنم
کد زیر در زبان php رو در نظر بگیرید :
کد:
function div($a , $b)
{
return $a/$b;
}
try
{
div(7, 0);
}
catch(Exception $e)
{
echo 'Message: ' .$e->getMessage();
}
کد:
function div($a , $b)
{
if($b ===0)
{
throw new Exception('err : taghsim bar sefr');
}
return $a/$b;
}
try
{
div(7, 0);
}
catch(Exception $e)
{
echo 'Message: ' .$e->getMessage();
}
یعنی باید حتما خودمون استثانا رو پیدا و واسه اون throw تعریف کنیم
در حالیکه در زبان های دیگه مثل جاوا داریم
کد:
public static void main(String[] args)
{
try
{
div(7, 0);
}
catch(Exception e)
{
System.out.println("message : "+e.getMessage());
}
}
public static int div(int a, int b)
{
return a/b;
}
اگر قرار باشه برنامه نویس از تمام استثناها اطلاع داشته باشه که تو خود کدنویسی جلوی اونها رو میگیره دیگه چه کاری هست که بخوایم از exception ها استفاده کنیم
مثال بالا بدون مدیریت exception
کد:
$msg = '';
function div($a , $b)
{
global $msg;
if($b ===0)
{
$msg = 'err : taghsim bar sefr';
return false;
}
return $a/$b;
}
if( ! div(7,0))
{
global $msg;
echo $msg;
}