PHP के पुराने संस्करणों में, हम केवल अपवादों को ही संभाल सकते थे। त्रुटियों को संभालना संभव नहीं था। एक घातक त्रुटि के मामले में, यह पूर्ण आवेदन या आवेदन के कुछ हिस्से को रोक देता था। इस समस्या को दूर करने के लिए, PHP 7 ने अपवाद और त्रुटियों दोनों को संभालने के लिए थ्रोएबल इंटरफ़ेस जोड़ा।
>अपवाद: जब भी कोई घातक और पुनर्प्राप्ति योग्य त्रुटि होती है, PHP 7 संपूर्ण एप्लिकेशन या स्क्रिप्ट निष्पादन को रोकने के बजाय एक अपवाद फेंकता है।
त्रुटि: PHP 7 फेंकता है टाइप एरर, अंकगणित त्रुटि, पार्सर त्रुटि, और अभिकथन त्रुटि, लेकिन चेतावनियां और नोटिस त्रुटियां अपरिवर्तित रहती हैं। कोशिश/पकड़ ब्लॉक का उपयोग करके, त्रुटि उदाहरण पकड़ा जा सकता है, और अब, FatalErrors एक त्रुटि उदाहरण फेंक सकता है। PHP 7 में, दो अपवाद शाखाओं, एक्सेप्शन और एरर को, थ्रोएबल को लागू करने के लिए, एक थ्रोएबल इंटरफ़ेस जोड़ा जाता है।
उदाहरण
<?php class XYZ { public function Hello() { echo "class XYZ\n"; } } try { $a = new XYZ(); $a->Hello(); $a = null; $a->Hello(); } catch (Error $e) { echo "Error occurred". PHP_EOL; echo $e->getMessage() . PHP_EOL ; echo "File: " . $e->getFile() . PHP_EOL; echo "Line: " . $e->getLine(). PHP_EOL; } echo "Continue the PHP code\n"; ?>
आउटपुट
उपरोक्त प्रोग्राम में, हमें निम्न त्रुटि मिलेगी -
class XYZ Error occurred Call to a member function Hello() on null File: /home/cg/root/9008538/main.php Line: 11 Continue with the PHP code
नोट: उपरोक्त उदाहरण में, हम एक अशक्त वस्तु पर एक विधि कहते हैं। कैच का उपयोग अपवाद को संभालने और फिर PHP कोड को जारी रखने के लिए किया जाता है।
अंकगणित त्रुटि
हम अंकगणितीय त्रुटि के DivisionByZeroError का उपयोग करेंगे। लेकिन फिर भी, हमें डिवीजन ऑपरेटर पर चेतावनी त्रुटि मिलेगी।
उदाहरण:अंकगणितीय त्रुटि
<?php $x = 10; $y = 0; try { $z = intdiv($x , $y); } catch (DivisionByZeroError $e) { echo "Error has occured\n"; echo $e->getMessage() . PHP_EOL ; echo "File: " . $e->getFile() . PHP_EOL; echo "Line: " . $e->getLine(). PHP_EOL; } echo "$z \n"; echo " continues with the PHP code\n"; ?>
आउटपुट
उपरोक्त प्रोग्राम का आउटपुट चेतावनी त्रुटि के साथ निष्पादित होगा -
Division by zero File: /home/cg/root/9008538/main.php Line: 5 continues with the PHP code
नोट: उपरोक्त कार्यक्रम में, हम theDivisionByZeroError intheintdiv() फ़ंक्शन को पकड़ते हैं और रिपोर्ट करते हैं।