परिचय
थ्रोएबल इंटरफ़ेस त्रुटि और अपवाद वर्ग द्वारा कार्यान्वित किया जाता है। सभी पूर्वनिर्धारित त्रुटि वर्ग त्रुटि वर्ग से विरासत में मिले हैं। संबंधित एरर क्लास का इंस्टेंस ट्राई ब्लॉक के अंदर फेंका जाता है और उपयुक्त कैच ब्लॉक के अंदर प्रोसेस किया जाता है।
फेंकने में त्रुटि
सामान्य निष्पादन (जब कोशिश ब्लॉक के भीतर कोई अपवाद नहीं फेंका जाता है) उस अंतिम कैच ब्लॉक को क्रम में परिभाषित करने के बाद जारी रहेगा।
उदाहरण
<?php function div($x, $y) { if (!$y) { throw new Exception('Division by zero.'); } return $x/$y; } try { echo div(10,5) . "\n"; echo div(10,0) . "\n"; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } // Continue execution echo "Execution continues\n"; ?>
आउटपुट
निम्न आउटपुट प्रदर्शित होता है
2 Caught exception: Division by zero. Execution continues
निम्नलिखित उदाहरण में, लेखन त्रुटि किसी फ़ंक्शन को निष्पादित करते समय फेंक दिया जाता है क्योंकि इसके लिए उपयुक्त तर्क पारित नहीं किए जाते हैं। संबंधित त्रुटि संदेश प्रदर्शित होता है
उदाहरण
<?php function add(int $num1, int $num2){ return $num1 + $num2; } try { $value = add(1, 'one'); } catch (TypeError $e) { echo $e->getMessage(). "\n"; } ?>
आउटपुट
निम्न आउटपुट प्रदर्शित होता है
Argument 2 passed to add() must be of the type integer, string given
एसपीएल अपवाद
मानक PHP पुस्तकालय में पूर्वनिर्धारित अपवाद हैं
LogicException | अपवाद जो प्रोग्राम लॉजिक में त्रुटि का प्रतिनिधित्व करता है। |
BadFunctionCallException | अपवाद तब फेंका जाता है जब कोई कॉलबैक किसी अपरिभाषित फ़ंक्शन को संदर्भित करता है या यदि कुछ तर्क गायब हैं। |
BadMethodCallException | अपवाद तब फेंका जाता है जब कॉलबैक एक अपरिभाषित विधि को संदर्भित करता है या यदि कुछ तर्क गायब हैं। |
डोमेन अपवाद | अपवाद तब फेंका जाता है जब कोई मान किसी परिभाषित मान्य डेटा डोमेन का पालन नहीं करता है। |
अवैधArgumentException | अपवाद फेंका गया है यदि कोई तर्क अपेक्षित प्रकार का नहीं है। |
लंबाई अपवाद | यदि लंबाई अमान्य है तो अपवाद फेंक दिया जाता है। |
OutOfRangeException | अवैध अनुक्रमणिका का अनुरोध किए जाने पर अपवाद फेंका गया। |
रनटाइम अपवाद | अपवाद तब फेंका जाता है जब कोई त्रुटि होती है जो केवल रनटाइम पर पाई जा सकती है। |
आउटऑफबाउंड अपवाद | यदि कोई मान मान्य कुंजी नहीं है तो अपवाद फेंक दिया जाता है। |
अतिप्रवाह अपवाद | एक पूर्ण कंटेनर में एक तत्व जोड़ते समय अपवाद फेंक दिया गया। |
रेंज अपवाद | प्रोग्राम निष्पादन के दौरान श्रेणी त्रुटियों को इंगित करने के लिए अपवाद फेंका गया। अंडर/ओवरफ्लो के अलावा एक अंकगणितीय त्रुटि। |
अंडरफ़्लो एक्सेप्शन | खाली कंटेनर पर अमान्य ऑपरेशन करते समय अपवाद को फेंक दिया जाता है, जैसे कि किसी तत्व को हटाना। |
अप्रत्याशित ValueException | अपवाद तब फेंका जाता है जब कोई मान मानों के सेट से मेल नहीं खाता हो। |
निम्न उदाहरण OutOfBoundsException दिखाता है PHP सरणी में एक कुंजी नहीं मिलने पर फेंक दिया जाता है
उदाहरण
<?php $arr=array("one"=>1, "two"=>2,"three"=>3,"four"=>4); $key="ten"; try{ if (array_key_exists($key, $arr)==FALSE){ throw new OutOfBoundsException("key not found");} else { echo $arr[$key];} } catch (OutOfBoundsException $e){ echo $e->getMessage(). "\n"; } ?>
आउटपुट
निम्न आउटपुट प्रदर्शित होता है
key not found