পরিচয়
PHP বিভিন্ন ব্যতিক্রম কেস পরিচালনা করার জন্য একটি চেষ্টা ব্লক অনুসরণ করে ক্যাচ ব্লকের একটি সিরিজের অনুমতি দেয়। পূর্বনির্ধারিত ব্যতিক্রম এবং ত্রুটির পাশাপাশি ব্যবহারকারীর সংজ্ঞায়িত ব্যতিক্রমগুলি পরিচালনা করার জন্য বিভিন্ন ক্যাচ ব্লক ব্যবহার করা যেতে পারে।
উদাহরণ
নিম্নলিখিত উদাহরণ DivisioByZeroError, TypeError, ArgumentCountError এবং InvalidArgumentException শর্তগুলি প্রক্রিয়া করতে ক্যাচ ব্লক ব্যবহার করে। সাধারণ ব্যতিক্রম পরিচালনা করার জন্য একটি ক্যাচ ব্লকও রয়েছে।
উদাহরণ
<?php declare(strict_types=1); function divide(int $a, int $b) : int { return $a / $b; } $a=10; $b=0; try{ if (!$b) { throw new DivisionByZeroError('Division by zero.');} if (is_int($a)==FALSE || is_int($b)==FALSE) throw new InvalidArgumentException("Invalid type of arguments"); $result=divide($a, $b); echo $result; } catch (TypeError $x)//if argument types not matching{ echo $x->getMessage(); } catch (DivisionByZeroError $y) //if denominator is 0{ echo $y->getMessage(); } catch (ArgumentCountError $z) //if no.of arguments not equal to 2{ echo $z->getMessage(); } catch (InvalidArgumentException $i) //if argument types not matching{ echo $i->getMessage(); } catch (Exception $ex) // any uncaught exception{ echo $ex->getMessage(); } ?>
আউটপুট
শুরুতে, যেহেতু হর হল ০, বিভাজক ০ ত্রুটি প্রদর্শিত হবে
Division by 0
$b=3 সেট করুন যা TypeError সৃষ্টি করবে কারণ বিভাজন ফাংশন পূর্ণসংখ্যা প্রদান করবে বলে প্রত্যাশিত কিন্তু বিভাজনের ফলে ফ্লোট হয়
Return value of divide() must be of the type integer, float returned
$res=divide($a); এর ফলে ArgumentCountError হবে
Too few arguments to function divide(), 1 passed in C:\xampp\php\test1.php on line 13 and exactly 2 expected
আর্গুমেন্টের একটি যদি পূর্ণসংখ্যা না হয়, তাহলে এটি InvalidArgumentException এর একটি কেস
Invalid type of arguments