Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP 7 में एरर्स: Throwable इंटरफेस और एरर हायरार्की


परिचय

संस्करण 7 से पहले, PHP पार्सर विभिन्न स्थितियों के जवाब में एरर्स रिपोर्ट करता था। प्रत्येक एरर एक निश्चित पूर्वनिर्धारित प्रकार की होती थी। PHP 7 ने एरर रिपोर्टिंग के तंत्र को बदल दिया। पारंपरिक एरर रिपोर्टिंग के बजाय, अधिकांश एरर्स अब एक्सेप्शन फेंककर रिपोर्ट की जाती हैं।

यदि एरर एक्सेप्शन्स अनहैंडल्ड रहती हैं, तो एक फैटल एरर रिपोर्ट की जाती है और इसे पारंपरिक एरर कंडीशन की तरह हैंडल किया जाएगा। PHP की एरर हायरार्की Throwable इंटरफेस से शुरू होती है। ArithmeticError, AssertionError, CompileError और TypeError जैसे सभी पूर्वनिर्धारित एरर्स Throwable इंटरफेस को इम्प्लीमेंट करने वाली क्लासेज हैं। PHP 7 में Exception भी Throwable इंटरफेस को इम्प्लीमेंट करता है।

Throwable इंटरफेस

Throwable इंटरफेस किसी भी ऑब्जेक्ट के लिए बेस के रूप में कार्य करता है जिसे throw स्टेटमेंट के माध्यम से फेंका जा सकता है, जिसमें Error और Exception ऑब्जेक्ट्स शामिल हैं। एक यूजर-डिफाइंड क्लास सीधे Throwable इंटरफेस को इम्प्लीमेंट नहीं कर सकती। इसके बजाय, यूजर-डिफाइंड एक्सेप्शन क्लास घोषित करने के लिए, इसे Exception क्लास को एक्सटेंड करना होगा।

एक्सेप्शन हैंडलिंग घटक

PHP की एक्सेप्शन हैंडलिंग में throw, catch, try स्टेटमेंट्स होते हैं। एक्सेप्शन ऑब्जेक्ट उठाने के लिए throw कीवर्ड है। फेंके गए एक्सेप्शन्स catch ब्लॉक द्वारा प्रोसेस किए जाते हैं। संभावित रूप से एक्सेप्शन के लिए कमजोर PHP कोड try ब्लॉक में संलग्न होता है।

एक या अधिक catch ब्लॉक्स विभिन्न Exception क्लासेज के इंस्टेंसेज को पकड़ने के लिए मौजूद हो सकते हैं। जब try ब्लॉक में कोई एक्सेप्शन नहीं होता, तो सामान्य निष्पादन अंतिम catch ब्लॉक के बाद जारी रहेगा। हालांकि, जब try ब्लॉक के अंदर एक्सेप्शन फेंका जाता है, तो अगले स्टेटमेंट के निष्पादित होने के बजाय, PHP उस catch ब्लॉक को खोजने का प्रयास करता है जो हैंडल किए जाने वाले एक्सेप्शन के प्रकार से मेल खाता है। यदि कोई मिलान करने वाला catch ब्लॉक परिभाषित नहीं है, तो PHP पार्सर Uncaught Exception संदेश के साथ Fatal error रिपोर्ट करेगा।

आप finally ब्लॉक भी प्रदान कर सकते हैं या तो catch ब्लॉक्स के बाद या उनके बजाय। finally ब्लॉक में कोड हमेशा निष्पादित होगा, चाहे try ब्लॉक के अंदर एक्सेप्शन हो या नहीं।

एरर हायरार्की (PHP 7+)

Throwable (इंटरफेस)
├── Error
│   ├── ArithmeticError
│   ├── AssertionError
│   ├── CompileError
│   │   └── ParseError
│   ├── TypeError
│   │   └── ArgumentCountError
│   └── ValueError (PHP 8.0+)
└── Exception
    ├── LogicException
    │   ├── BadFunctionCallException
    │   ├── BadMethodCallException
    │   ├── DomainException
    │   ├── InvalidArgumentException
    │   ├── LengthException
    │   └── OutOfRangeException
    └── RuntimeException
        ├── OutOfBoundsException
        ├── OverflowException
        ├── RangeException
        ├── UnderflowException
        └── UnexpectedValueException

मुख्य परिवर्तन PHP 7 में

  • फैटल एरर्स अब Error एक्सेप्शन फेंकती हैं (पकड़ी जा सकती हैं)।
  • TypeError सख्त टाइप मोड में टाइप मिसमैच के लिए।
  • ParseError include/eval के दौरान पार्स त्रुटियों के लिए।
  • AssertionError assert() विफलता के लिए।
  • ArithmeticError गणितीय त्रुटियों के लिए (जैसे div by zero, bitshift)।
  • Error और Exception दोनों Throwable इम्प्लीमेंट करते हैं।

सभी catch करने के लिए Throwable उपयोग करें

<?php
try {
    // कोड जो Error या Exception फेंक सकता है
} catch (Throwable $t) {
    // दोनों Error और Exception यहां पकड़े जाएंगे
    echo $t->getMessage();
}
?>
  1. - PHP में restore_exception_handler() फंक्शन

    PHP में restore_exception_handler() फंक्शन पिछले अपवाद हैंडलर को पुनर्स्थापित करता है। इसका उपयोग set_exception_handler() का उपयोग करके अपवाद हैंडलर फंक्शन बदलने के बाद, पिछले अपवाद हैंडलर (जो बिल्ट-इन या उपयोगकर्ता-परिभाषित फंक्शन हो सकता है) पर वापस जाने के लिए किया जाता है। सिंटैक्स restore_exce

  1. - PHP में error_reporting() फंक्शन

    PHP में error_reporting() फंक्शन निर्दिष्ट करता है कि किन त्रुटियों की रिपोर्ट की जाए। यह रनटाइम पर error_reporting डायरेक्टिव सेट करता है। PHP में कई त्रुटि स्तर हैं, इस फंक्शन का उपयोग करके उस स्तर को आपके स्क्रिप्ट की अवधि (रनटाइम) के लिए सेट किया जाता है। यदि कोई स्तर पैरामीटर नहीं दिया गया है त

  1. - PHP में error_get_last() फंक्शन

    PHP में error_get_last() फंक्शन अंतिम हुई त्रुटि को एक सहयोगी सरणी के रूप में प्राप्त करता है। सहयोगी सरणी में चार कुंजियाँ होती हैं: [type] - त्रुटि प्रकार का वर्णन करता है [message] - त्रुटि संदेश का वर्णन करता है [file] - वह फ़ाइल जहां त्रुटि हुई [line] - वह लाइन जहां त्रुटि हुई सिंटैक्स error