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

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


परिचय

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

catch और finally ब्लॉक दोनों

निम्न उदाहरण में, दोनों catch और finally ब्लॉक्स दिए गए हैं। यदि try ब्लॉक में एक्सेप्शन होता है, तो दोनों में कोड निष्पादित होता है। यदि कोई एक्सेप्शन नहीं है, तो केवल finally ब्लॉक निष्पादित होता है।

उदाहरण 1: एक्सेप्शन के साथ

<?php
function div($x, $y) {
    if (!$y) {
        throw new Exception('Division by zero.');
    }
    return $x / $y;
}

try {
    echo div(10, 0) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ', $e->getMessage(), "\n";
} finally {
    echo "This block is always executed\n";
}

// निष्पादन जारी रखें
echo "Execution continues\n";
?>

आउटपुट

Caught exception: Division by zero.
This block is always executed
Execution continues

उदाहरण 2: बिना एक्सेप्शन के

<?php
function div($x, $y) {
    if (!$y) {
        throw new Exception('Division by zero.');
    }
    return $x / $y;
}

try {
    echo div(10, 5) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ', $e->getMessage(), "\n";
} finally {
    echo "This block is always executed\n";
}

echo "Execution continues\n";
?>

आउटपुट

2
This block is always executed
Execution continues

केवल finally ब्लॉक (catch के बिना)

निम्न उदाहरण में दो try ब्लॉक्स हैं। उनमें से एक में केवल finally ब्लॉक है। इसका try ब्लॉक div फंक्शन कॉल करता है जो एक एक्सेप्शन फेंकता है।

<?php
function div($x, $y) {
    try {
        if (!$y) {
            throw new Exception('Division by zero.');
        }
        return $x / $y;
    }
    catch (Exception $e) {
        echo 'Caught exception: ', $e->getMessage(), "\n";
    }
}

try {
    echo div(10, 0) . "\n";
} finally {
    echo "This block is always executed\n";
}

echo "Execution continues\n";
?>

आउटपुट

Caught exception: Division by zero.
This block is always executed
Execution continues

finally के उपयोग के मामले

  • फाइल हैंडल्स बंद करना: fclose($handle)
  • डेटाबेस कनेक्शन बंद करना: $pdo = null
  • लॉक रिलीज करना: $lock->release()
  • अस्थायी फाइलें हटाना
  • लॉगिंग/ऑडिटिंग

निष्पादन क्रम

  1. try ब्लॉक निष्पादित होता है
  2. यदि एक्सेप्शन: matching catch ब्लॉक निष्पादित होता है
  3. finally ब्लॉक निष्पादित होता है (हमेशा)
  4. catch/finally के बाद का कोड जारी रहता है (यदि कोई अनकॉट एक्सेप्शन नहीं)
  1. - Java में Try-Catch से Exception Handling

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

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

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

  1. - मजबूत क्रैश हैंडलिंग के लिए रेस्क्यू ब्लॉक्स से परे Ruby अपवादों तक पहुंचें

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