ভূমিকা
try-catch ব্লকগুলো যেকোনো পছন্দসই লেভেল পর্যন্ত নেস্টেড হতে পারে। এক্সেপশনগুলো আপিয়ারেন্সের রিভার্স অর্ডারে হ্যান্ডেল করা হয় অর্থাৎ ইনারমোস্ট এক্সেপশন প্রসেসিং প্রথমে হয়।
উদাহরণ
নিচের উদাহরণে, ইনার try ব্লক চেক করে দুটি ভেরিয়েবলमे से যেকোনোটি নন-নিউমেরিক কিনা, এবং যদি হয়, একটি ইউজার-ডিফাইনড এক্সেপশন থ্রো করে। আউটার try ব্লক DivisionByZeroError থ্রো করে যদি ডিনোমিনেটর 0 হয়। অন্যথায় দুই সংখ্যার ডিভিশন দেখানো হয়।
উদাহরণ
<?php
class myException extends Exception{
function message(){
return "error : " . $this->getMessage() . " in line no " . $this->getLine();
}
}
$x=10;
$y=0;
try{
if (is_numeric($x)==FALSE || is_numeric($y)==FALSE)
throw new myException("Non numeric data");
} catch (myException $m){
echo $m->message();
return;
}
if ($y==0)
throw new DivisionByZeroError ("Division by 0");
echo $x/$y;
} catch (DivisionByZeroError $e){
echo $e->getMessage() ."in line no " . $e->getLine();
}
?>
আউটপুট
নিচের আউটপুট দেখানো হয়:
Division by 0 in line no 19
যেকোনো একটি ভেরিয়েবলকে নন-নিউমেরিক মান দিন:
error : Non numeric data in line no 20
যদি উভয় ভেরিয়েবলই সংখ্যা হয়, তাদের ডিভিশন প্রিন্ট হবে।