কম্পিউটার টিউটোরিয়াল

PHP finally সহ এক্সেপশন হ্যান্ডলিং


ভূমিকা

finally ব্লকের কোড সবসময় এক্সিকিউট হবে try ব্লকে এক্সেপশন থাকে কিনা তার নির্বিশেষে। এই ব্লক catch ব্লকের পর বা তার বদলে ظاهر হয়।

catch এবং finally ব্লক

নিচের উদাহরণে, catch এবং finally উভয় ব্লক দেওয়া আছে। যদি try ব্লকে এক্সেপশন ঘটে, উভয় ব্লকের কোড এক্সিকিউট হয়। যদি এক্সেপশন না ঘটে, শুধু finally ব্লক এক্সিকিউট হয়।

উদাহরণ

<?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";
}
// Continue execution
echo "Execution continues\n";
?>

আউটপুট

নিচের আউটপুট দেখানো হয়:

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

try ব্লকের স্টেটমেন্ট পরিবর্তন করুন যাতে কোনো এক্সেপশন না ঘটে:

উদাহরণ

<?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";
}
// Continue execution
echo "Execution continues\n";
?>

আউটপুট

নিচের আউটপুট দেখানো হয়:

2
This block is always executed
Execution continues

শুধু finally ব্লক

নিচের উদাহরণে দুটি 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";
}
// Continue execution
echo "Execution continues\n";
?>

আউটপুট

নিচের আউটপুট দেখানো হয়:

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

  1. জাভায় Try-Catch দিয়ে এক্সসেপশন হ্যান্ডলিং

  2. সি++-এ এক্সেপশন হ্যান্ডেলিং (Exception Handling) বেসিক্স

  3. পাইথনে এক্সসেপশন কি? (What is Exception)

  4. রুবি এক্সেপশন রেসকিউ ব্লকের বাইরে অ্যাক্সেস করুন: রোবাস্ট ক্র্যাশ হ্যান্ডলিংয়ের জন্য