IMANAZADI
یک شنبه 08 بهمن 1396, 17:43 عصر
با سلام
من چند روز میخواستم بجای بررسی خطا های و استثناهای به شکل قدیمی در کلاسها ، از مدیریت خطای خود 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();
}
وقتی این کد رو اجرا میکنیم try catch عمل نمیکنه تا زمانیکه کد به شکل زیر دربیاد
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;
}
من چند روز میخواستم بجای بررسی خطا های و استثناهای به شکل قدیمی در کلاسها ، از مدیریت خطای خود 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();
}
وقتی این کد رو اجرا میکنیم try catch عمل نمیکنه تا زمانیکه کد به شکل زیر دربیاد
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;
}