क्या अपवाद उपclass PHP में बनाया गया है?




exception exception-handling (2)

PHP 5 में दो अपवाद हैं

एसपीएल में अपने स्वयं के कुछ अपवाद शामिल हैं :

  • BadFunctionCallException एक कॉलबैक एक अपरिभाषित फ़ंक्शन को संदर्भित करता है या यदि कुछ तर्क गुम हैं।
  • BadMethodCallException एक कॉलबैक एक अपरिभाषित विधि को संदर्भित करता है या यदि कुछ तर्क गुम हैं।
  • DomainException एक मान परिभाषित वैध डेटा डोमेन का पालन नहीं करता है।
  • अवैध InvalidArgumentException पारित तर्क अमान्य थे।
  • लंबाई LengthException पैरामीटर अनुमत लंबाई से अधिक है (तार, सरणी, फ़ाइल आकार, आदि के लिए उपयोग किया जाता है)।
  • LogicException जेनेरिक त्रुटि प्रोग्राम तर्क में हुई।
  • OutOfBoundsException एक अवैध इंडेक्स का अनुरोध किया गया था।
  • OutOfRangeException एक अवैध इंडेक्स का अनुरोध किया गया था। यह त्रुटियों का प्रतिनिधित्व करता है जिन्हें संकलन समय पर पता लगाया जाना चाहिए।
  • OverflowException एक पूर्ण कंटेनर में तत्व जोड़ना।
  • RangeException प्रोग्राम निष्पादन के दौरान रेंज त्रुटियों को इंगित करें। आम तौर पर इसका मतलब है कि अंडरफ्लो के अलावा अन्य अंकगणितीय त्रुटि थी।
  • RuntimeException एक त्रुटि जो केवल रनटाइम पर पाई जा सकती है।
  • UnderflowException एक खाली कंटेनर पर एक अमान्य ऑपरेशन करना, जैसे किसी तत्व को निकालना।
  • UnexpectedValueException एक अप्रत्याशित मान प्राप्त किया गया था (यानी एक विधि कॉल से लौटाए गए मूल्य के परिणामस्वरूप)।

PHP 7 में आकर्षक अपवाद सहित नए अपवाद शामिल हैं। नए अपवादों में शामिल हैं:

  • Throwable योग्य किसी भी ऑब्जेक्ट के लिए बेस इंटरफेस है जिसे PHP 7 में फेंक स्टेटमेंट के माध्यम से फेंक दिया जा सकता है, जिसमें त्रुटि और अपवाद भी शामिल है।
  • Error सभी आंतरिक PHP त्रुटियों के लिए आधार वर्ग है।
  • AssertionError फेंक दिया जाता है जब assert () के माध्यम से एक दावा विफल रहता है।
  • ParseError फेंक दिया जाता है जब PHP कोड को पार्स करते समय कोई त्रुटि होती है, जैसे जब eval () को कॉल किया जाता है।
  • TypeError तीन परिदृश्य हैं जहां टाइपरर फेंक दिया जा सकता है। पहला वह स्थान है जहां किसी फ़ंक्शन में तर्क प्रकार पारित किया जा रहा है, इसके संबंधित घोषित पैरामीटर प्रकार से मेल नहीं खाता है। दूसरा वह स्थान है जहां फ़ंक्शन से एक मान वापस किया जा रहा है, घोषित फ़ंक्शन रिटर्न प्रकार से मेल नहीं खाता है। तीसरा वह स्थान है जहां एक अवैध संख्या में PHP अंतर्निहित PHP फ़ंक्शन (केवल सख्त मोड) को पास किया जाता है।
  • गणितीय परिचालन करते समय त्रुटि उत्पन्न होती है जब ArithmeticError त्रुटि फेंक दी जाती है। PHP 7.0 में, इन त्रुटियों में ऋणात्मक राशि से बिट्सफ़िफ्ट करने का प्रयास करना शामिल है, और intdiv () को कोई भी कॉल जिसके परिणामस्वरूप पूर्णांक की संभावित सीमाओं के बाहर कोई मान होगा।
  • DivisionByZeroError को फेंक दिया जाता है जब शून्य से संख्या को विभाजित करने का प्रयास किया जाता है।
  • ArgumentCountError फेंक दिया जाता है जब उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन या विधि में बहुत कम तर्क पारित किए जाते हैं।

यहां एक चार्ट है जो PHP 7 में पेश किए गए नए पदानुक्रम को प्रदर्शित करता है:

\Throwable
├── \Exception (implements \Throwable)
│   ├── \LogicException (extends \Exception)
│   │   ├── \BadFunctionCallException (extends \LogicException)
│   │   │   └── \BadMethodCallException (extends \BadFunctionCallException)
│   │   ├── \DomainException (extends \LogicException)
│   │   ├── \InvalidArgumentException (extends \LogicException)
│   │   ├── \LengthException (extends \LogicException)
│   │   └── \OutOfRangeException (extends \LogicException)
│   └── \RuntimeException (extends \Exception)
│       ├── \OutOfBoundsException (extends \RuntimeException)
│       ├── \OverflowException (extends \RuntimeException)
│       ├── \RangeException (extends \RuntimeException)
│       ├── \UnderflowException (extends \RuntimeException)
│       └── \UnexpectedValueException (extends \RuntimeException)
└── \Error (implements \Throwable)
    ├── \AssertionError (extends \Error)
    ├── \ParseError (extends \Error)
    └── \TypeError (extends \Error)
        └── \ArgumentCountError (extends \TypeError)
    └── \ArithmeticError (extends \Error)
        └── \DivisionByZeroError extends \ArithmeticError)

मैं अभी तक PHP में सभी अंतर्निहित अपवाद उप वर्गों की एक सूची नहीं ढूंढ पाया है। अपने स्वयं के अपवाद उप-वर्ग बनाने से पहले, जब वे समझ में आते हैं, तो मैं उन लोगों में निर्मित का उपयोग करता हूं।

उदाहरण के लिए, मुझे पता है कि अवैध अर्ग्यूमेंट अपवाद मौजूद है, लेकिन ऐसा लगता है कि जावा के NullPointerException के साथ तुलनीय कुछ भी नहीं है।

क्या किसी के पास PHP में उपलब्ध अपवाद उपखंडों की सूची से लिंक है या लिंक कर सकता है?


असल में, मैं अब उन्हें ढूंढने में कामयाब रहा कि मैंने तोड़ दिया और पूछा।

तकनीकी रूप से ऐसा लगता है कि PHP केवल अपवादों में निर्मित 2 है: http://www.php.net/manual/en/reserved.exceptions.php

और एसपीएल कई और परिभाषित करता है: http://www.php.net/manual/en/spl.exceptions.php

उनके उत्तराधिकारी की व्याख्या के साथ: http://www.php.net/~helly/php/ext/spl/classException.html

अद्यतन करें

उपरोक्त लिंक मृत है, यह मूल PHP अपवाद पदानुक्रम का एक चित्र था। मुझे मूल नहीं मिला, लेकिन यहां एक प्रतिस्थापन है:

मूल रूप से http://fossies.org/dox/php-5.2.17/classException.html पर मिला







exception-handling