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

PHP मल्टीपल catch ब्लॉक्स के साथ एक्सेप्शन हैंडलिंग


परिचय

PHP एक try ब्लॉक के बाद catch ब्लॉक्स की श्रृंखला की अनुमति देता है ताकि विभिन्न एक्सेप्शन केसेज को हैंडल किया जा सके। विभिन्न catch ब्लॉक्स का उपयोग पूर्वनिर्धारित एक्सेप्शन्स और एरर्स के साथ-साथ यूजर-डिफाइंड एक्सेप्शन्स को हैंडल करने के लिए किया जा सकता है।

उदाहरण: मल्टीपल catch ब्लॉक्स

निम्न उदाहरण DivisionByZeroError, TypeError, ArgumentCountError और InvalidArgumentException स्थितियों को प्रोसेस करने के लिए catch ब्लॉक्स का उपयोग करता है। सामान्य Exception को हैंडल करने के लिए भी एक catch ब्लॉक है।

<?php
declare(strict_types=1);

function divide(int $a, int $b): int {
    return $a / $b;
}

$a = 10;
$b = 0;

try {
    if (!$b) {
        throw new DivisionByZeroError('Division by zero.');
    }
    if (is_int($a) == FALSE || is_int($b) == FALSE) {
        throw new InvalidArgumentException("Invalid type of arguments");
    }
    $result = divide($a, $b);
    echo $result;
}
catch (TypeError $x) {
    echo $x->getMessage();
}
catch (DivisionByZeroError $y) {
    echo $y->getMessage();
}
catch (ArgumentCountError $z) {
    echo $z->getMessage();
}
catch (InvalidArgumentException $i) {
    echo $i->getMessage();
}
catch (Exception $ex) {
    echo $ex->getMessage();
}
?>

विभिन्न परिदृश्यों के लिए आउटपुट

1. डिनोमिनेटर 0 होने पर ($b=0)

Division by zero.

2. $b=3 सेट करने पर (TypeError क्योंकि divide int रिटर्न करने की उम्मीद करता है लेकिन डिवीजन फ्लोट देता है)

Return value of divide() must be of the type integer, float returned

3. divide फंक्शन में केवल एक आर्गुमेंट पास करने पर ($res=divide($a))

Too few arguments to function divide(), 1 passed ... and exactly 2 expected

4. यदि आर्गुमेंट्स में से एक इंटीजर नहीं है

Invalid type of arguments

महत्वपूर्ण नियम

  • Catch ब्लॉक्स को विशिष्ट से सामान्य क्रम में रखें (सबक्लास से पहले, पैरेंट क्लास बाद में)।
  • PHP 7.1+ में एक ही catch में मल्टीपल एक्सेप्शन टाइप्स: catch (TypeError | ArgumentCountError $e)
  • यदि कोई catch मैच नहीं करता, तो Uncaught Exception फैटल एरर होती है।
  • finally ब्लॉक हमेशा निष्पादित होता है (अगले आर्टिकल देखें)।

PHP 7.1+ मल्टी-कैच सिंटैक्स

try {
    // कोड
} catch (TypeError | ArgumentCountError | DivisionByZeroError $e) {
    echo "Error: " . $e->getMessage();
} catch (Exception $e) {
    echo "General: " . $e->getMessage();
}
  1. - Java में Try-Catch से Exception Handling

    Java Exceptions यहां तक कि सर्वश्रेष्ठ प्रोग्रामर भी अपने कोड में गलतियां करते हैं। एक त्रुटि टाइपो, अप्रत्याशित यूजर इनपुट, या कई अन्य कारणों से हो सकती है जिन्हें ट्रैक करना मुश्किल होता है। यहीं exception handling काम आती है। अच्छा कोड exception handlers शामिल करता है, जो कोड में त्रुटि का पूर्वन

  1. C++ में एक्सेप्शन हैंडलिंग की मूल बातें C++ में एक्सेप्शन हैंडलिंग की मूल बातें

    C++ में, एक्सेप्शन हैंडलिंग रनटाइम त्रुटियों को संभालने की एक प्रक्रिया है। एक्सेप्शन C++ में रनटाइम पर फेंका गया एक इवेंट है। सभी एक्सेप्शन std::exception क्लास से प्राप्त होते हैं। यह एक रनटाइम त्रुटि है जिसे संभाला जा सकता है। यदि हम एक्सेप्शन को नहीं संभालते हैं, तो यह एक्सेप्शन संदेश प्रिंट कर

  1. - पायथन 'with' स्टेटमेंट का उपयोग करते समय एक्सेप्शन कैसे पकड़ें?

    कोड को एक्सेप्शन पकड़ने के लिए निम्न प्रकार से फिर से लिखा जा सकता है: try: with open(myFile.txt) as f: print(f.readlines()) except: print(No such file or directory) हमें निम्न आउटपुट मिलता है: C:/Users/TutorialsPoint1/~.py No such file or directory