परिचय
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(); } ?>
आउटपुट
आरंभ करने के लिए, चूंकि हर 0 है, 0 से विभाजित करें त्रुटि प्रदर्शित की जाएगी
Division by 0
$b=3 सेट करें जो TypeError का कारण बनेगा क्योंकि डिवाइड फ़ंक्शन से पूर्णांक वापस आने की उम्मीद है लेकिन डिवीज़न का परिणाम फ्लोट में होता है
Return value of divide() must be of the type integer, float returned
यदि $res=divid($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