مزیت استفاده از exception ها (try...catch) بجای set_error_handler چیست

سلام دوستان
یه سوال برام پیش اومده
من معمولا از set_error_handler برای هندل کردن خطاها استفاده میکنم. اما میخوام بدونم مزیت استفاده از try...catch چی هست.
مثلا این مثال رو در نظر بگیرید که از کاربر یه عدد میگیریم و معکوسش رو برمیگردونیم. اگر کاربر عدد صفر وارد کنه ، خطای تقسیم بر صفر ایجاد میشه.
اگه بخوایم با exception اینو پیاده کنیم به این صورت میشه:
PHP:
try  {     if($_GET['num']==0){         throw new Exception('division by  zero');     }     echo 1/$_GET['num']; } catch( Exception $e ) {      echo  $e->getMessage(); }

که من به این صورت پیاده سازی میکنم
PHP:
set_error_handler(function(){    echo "division by zero"; }); echo 1/$_GET['num'];

مورد اولی حتی یه ضعف هایی نسبت به دومی داره. توی exceptionها حتما باید خطا رو هم خودت حدس زده باشی (یعنی بدونی که ممکنه که کاربر مقدار صفر رو بذاره) اما توی دومی هر خطایی داشته باشی می تونی اونی رو هندل کنی. ضمن اینکه در مورد دومی، دقیقا چک کردن نوع خطا رو هم میتونی داشته باشی. (یعنی چک کنی اگر عدد صفر بوده، یه سری عملیات انجام بشه.)

حالا میخوام بدونم اصلا مزیت exceptionها چی هست . یعنی اینکه با exceptionها چی کار میشه کرد که با اون روش دیگه نمیشه.
 

جدیدترین ارسال ها

بالا