परिचय
संस्करण 7 से पहले, PHP पार्सर विभिन्न स्थितियों के जवाब में त्रुटियों की रिपोर्ट करता था। प्रत्येक त्रुटि एक निश्चित पूर्वनिर्धारित प्रकार की हुआ करती थी। PHP7 ने त्रुटि रिपोर्टिंग के तंत्र को बदल दिया है। पारंपरिक त्रुटि रिपोर्टिंग के बजाय, अधिकांश त्रुटियाँ अब त्रुटि अपवादों को फेंक कर रिपोर्ट की जाती हैं।
यदि त्रुटि अपवाद अनियंत्रित हो जाते हैं, तो एक घातक त्रुटि की सूचना दी जाती है और इसे पारंपरिक त्रुटि स्थिति की तरह नियंत्रित किया जाएगा। PHP की त्रुटि पदानुक्रम थ्रोबल . से प्रारंभ होती है इंटरफेस। सभी पूर्वनिर्धारित त्रुटियां जैसे अंकगणित त्रुटि , अभिकथन त्रुटि , संकलन त्रुटि और लेखन त्रुटि थ्रोएबल इटरफेस को लागू करने वाली कक्षाएं हैं। PHP 7 में अपवाद भी थ्रोएबल इंटरफ़ेस लागू करता है।
थ्रोएबल इंटरफ़ेस किसी भी ऑब्जेक्ट के लिए आधार के रूप में कार्य करता है जिसे थ्रो स्टेटमेंट के माध्यम से फेंका जा सकता है, जिसमें त्रुटि . शामिल है और अपवाद वस्तुओं। एक उपयोगकर्ता परिभाषित वर्ग सीधे थ्रोएबल इंटरफ़ेस को लागू नहीं कर सकता है। इसके बजाय, एक उपयोगकर्ता परिभाषित अपवाद वर्ग घोषित करने के लिए, उसे अपवाद . का विस्तार करना होगा कक्षा।
PHP के एक्सेप्शन हैंडलिंग में थ्रो . शामिल हैं , पकड़ें , कोशिश करें बयान। अपवाद वस्तु को उठाने के लिए, फेंक . है खोजशब्द। फेंके गए अपवाद को कैच . द्वारा संसाधित किया जाता है खंड मैथा। PHP कोड जो अपवाद के लिए संभावित रूप से असुरक्षित है कोशिश . में संलग्न है ब्लॉक करें।
अपवाद वर्गों के विभिन्न उदाहरणों को पकड़ने के लिए एक या अधिक कैच ब्लॉक मौजूद हो सकते हैं। जब ट्राई ब्लॉक में कोई अपवाद नहीं होता है, तो अंतिम कैच ब्लॉक के बाद सामान्य निष्पादन जारी रहेगा। हालाँकि, जब अपवाद को try ब्लॉक के अंदर फेंका जाता है, तो नेस्ट स्टेटमेंट को निष्पादित करने के बजाय, PHP एक कैच ब्लॉक खोजने की कोशिश करता है जो कि हैंडल किए जाने वाले अपवाद के प्रकार से मेल खाता है। यदि कोई मिलान कैच ब्लॉक परिभाषित नहीं है, तो PHP पार्सर घातक त्रुटि की रिपोर्ट करेगा अनकॉटेड अपवाद . के साथ संदेश।
आप आखिरकार . भी प्रदान कर सकते हैं कैच ब्लॉक के बाद या इसके बजाय ब्लॉक करें। अंत में ब्लॉक में कोड हमेशा निष्पादित किया जाएगा, इस बात की परवाह किए बिना कि कोशिश ब्लॉक के अंदर अपवाद होता है या नहीं।