ভূমিকা
finally ব্লকের একটি আকর্ষণীয় আচরণ থাকে যখন try ব্লক বা catch ব্লক (বা উভয়) একটি return স্টেটমেন্ট ধারণ করে। সাধারণত return স্টেটমেন্ট প্রোগ্রামের কন্ট্রোল কলিং পজিশনে ফেরত দেয়। কিন্তু, try/catch ব্লকে return থাকা একটি ফাংশনের ক্ষেত্রে, finally ব্লকের স্টেটমেন্টগুলো রিটার্ন করার আগে প্রথমে এক্সিকিউট হয়।
উদাহরণ
নিচের উদাহরণে, div() ফাংশনে একটি try-catch-finally কনস্ট্রাক্ট আছে। এক্সেপশন ছাড়া try ব্লক ডিভিশনের ফলাফল রিটার্ন করে। এক্সেপশন হলে, catch ব্লক এরর মেসেজ রিটার্ন করে। কিন্তু, যেকোনো কেসে finally ব্লকের স্টেটমেন্ট প্রথমে এক্সিকিউট হয়।
উদাহরণ
<?php
function div($x, $y){
try {
if ($y==0)
throw new Exception("Division by 0");
else
$res=$x/$y;
return $res;
}
catch (Exception $e){
return $e->getMessage();
}
finally{
echo "This block is always executed\n";
}
}
$x=10;
$y=0;
echo div($x,$y);
?>
আউটপুট
নিচের আউটপুট দেখানো হয়:
This block is always executed Division by 0
$y-এর মান 5 করলে নিচের আউটপুট দেখানো হয়:
This block is always executed 2