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




exception-handling (3)

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 पर मिला


चेतावनी: [फ़ंक्शन] पैरामीटर 1 संसाधन होने की अपेक्षा करता है, बूलियन दिया जाता है

( चेतावनी का एक और सामान्य भिन्नता : mysql_fetch_array () पैरामीटर 1 संसाधन होने के लिए उम्मीद करता है, बूलियन दिया गया )

संसाधन PHP में एक type हैं (जैसे स्ट्रिंग्स, पूर्णांक या ऑब्जेक्ट्स)। एक संसाधन एक अपारदर्शी ब्लॉब है जिसमें स्वयं का कोई स्वाभाविक अर्थपूर्ण मूल्य नहीं है। एक संसाधन PHP कार्यों या एक्सटेंशन के एक निश्चित सेट द्वारा विशिष्ट और परिभाषित किया गया है। उदाहरण के लिए, MySQL एक्सटेंशन दो संसाधन प्रकारों को परिभाषित करता है :

MySQL मॉड्यूल में दो संसाधन प्रकार उपयोग किए जाते हैं। The first one is the link identifier for a database connection, the second a resource which holds the result of a query.

The cURL extension defines another two resource types :

... a cURL handle and a cURL multi handle.

When var_dump ed, the values look like this:

$resource = curl_init();
var_dump($resource);

resource(1) of type (curl)

That's all most resources are, a numeric identifier ( (1) ) of a certain type ( (curl) ).

You carry these resources around and pass them to different functions for which such a resource means something. Typically these functions allocate certain data in the background and a resource is just a reference which they use to keep track of this data internally.

The " ... expects parameter 1 to be resource, boolean given " error is typically the result of an unchecked operation that was supposed to create a resource, but returned false instead. For instance, the fopen function has this description:

Return Values

Returns a file pointer resource on success, or FALSE on error.

So in this code, $fp will either be a resource(x) of type (stream) or false :

$fp = fopen(...);

If you do not check whether the fopen operation succeed or failed and hence whether $fp is a valid resource or false and pass $fp to another function which expects a resource, you may get the above error:

$fp   = fopen(...);
$data = fread($fp, 1024);

Warning: fread() expects parameter 1 to be resource, boolean given

You always need to error check the return value of functions which are trying to allocate a resource and may fail :

$fp = fopen(...);

if (!$fp) {
    trigger_error('Failed to allocate resource');
    exit;
}

$data = fread($fp, 1024);

Related Errors:





php class exception exception-handling