ভূমিকা
Exception ক্লাস Throwable ইন্টারফেস ইমপ্লিমেন্ট করে এবং সকল Exception ক্লাসের বেস ক্লাস, প্রিডিফাইনড এক্সেপশনসহ ইউজার-ডিফাইনড এক্সেপশন। Exception ক্লাস Throwable ইন্টারফেস থেকে কিছু final (নন-ওভাররাইডেবল) মেথড ডিফাইন করে সেগুলো ইমপ্লিমেন্ট করতে, এবং __toString() মেথড যা ওভাররাইড করা যেতে পারে Exception অবজেক্টের স্ট্রিং রিপ্রেজেন্টেশন রিটার্ন করার জন্য।
| final public function getMessage() | এক্সেপশনের মেসেজ |
| final public function getCode() | এক্সেপশনের কোড |
| final public function getFile() | সোর্স ফাইলনেম |
| final public function getLine() | সোর্স লাইন |
| final public function getTrace() | ব্যাকট্রেস() এর একটি অ্যারে |
| final public function getPrevious() | পূর্ববর্তী এক্সেপশন |
| final public function getTraceAsString() | ফরম্যাটেড স্ট্রিং অফ ট্রেস |
| public function __toString() | ডিসপ্লে জন্য ফরম্যাটেড স্ট্রিং |
যদি ইউজার-ডিফাইনড এক্সেপশন ক্লাস কনস্ট্রাক্টর রিডিফাইন করে, তবে সেটি parent::__construct() কল করা উচিত যাতে সকল উপলব্ধ ডেটা যথাযথভাবে অ্যাসাইন হয়েছে নিশ্চিত করা যায়।
উদাহরণ
নিচের স্ক্রিপ্ট একটি কাস্টম এক্সেপশন ক্লাস myException ডিফাইন করে। এই টাইপের এক্সেপশন থ্রো করা হয় যদি $num-এর মান 0-এর চেয়ে কম বা 100-এর চেয়ে বড় হয়। Exception ক্লাসের getMessage() মেথড এরর মেসেজ রিটার্ন করে এবং getLine() মেথড সেই লাইন নম্বর রিটার্ন করে যেখানে এক্সেপশন দেখানো হয়েছে।
উদাহরণ
<?php
class myException extends Exception{
function message(){
return "error : " . $this->getMessage() . " in line no " . $this->getLine();
}
}
$num=125;
try{
if ($num>100 || $num<0)
throw new myException("$num is invalid number");
else
echo "$num is a valid number";
}
catch (myException $m){
echo $m->message();
}
?>
আউটপুট
উপরোক্ত কোড $num=125 এবং $num=90 দিয়ে চালিয়ে এরর মেসেজ এবং বৈধ নম্বরের মেসেজ পেতে:
error : 125 is invalid number in line no 10