ভূমিকা
PHP একটি try ব্লকের পর একাধিক catch ব্লক সিরিজ অনুমতি দেয় যাতে বিভিন্ন এক্সেপশন কেস হ্যান্ডেল করা যায়। বিভিন্ন catch ব্লক ব্যবহার করা যেতে পারে প্রিডিফাইনড এক্সেপশন এবং এররসহ ইউজার-ডিফাইনড এক্সেপশন হ্যান্ডেল করার জন্য।
উদাহরণ
নিচের উদাহরণে catch ব্লকগুলো DivisionByZeroError, TypeError, ArgumentCountError এবং InvalidArgumentException কন্ডিশন প্রসেস করতে ব্যবহৃত হয়েছে। সাধারণ Exception হ্যান্ডেল করার জন্যও একটি catch ব্লক আছে।
উদাহরণ
<?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();
}
?>
আউটপুট
শুরুতে, যেহেতু ডিনোমিনেটর 0, Divide by 0 এরর দেখানো হবে:
Division by 0
$b=3 সেট করলে TypeError হবে কারণ divide ফাংশন ইন্টিজার রিটার্ন এক্সপেক্ট করে কিন্তু ডিভিশন ফ্লোট দেয়:
Return value of divide() must be of the type integer, float returned
যদি divide ফাংশনে শুধু একটি ভেরিয়েবল পাস করা হয় $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