পরিচয়
নিক্ষেপযোগ্য ইন্টারফেস ত্রুটি এবং ব্যতিক্রম শ্রেণী দ্বারা প্রয়োগ করা হয়। সমস্ত পূর্বনির্ধারিত ত্রুটি ক্লাস ত্রুটি ক্লাস থেকে উত্তরাধিকারসূত্রে প্রাপ্ত হয়। সংশ্লিষ্ট ত্রুটি ক্লাসের উদাহরণ ট্রাই ব্লকের ভিতরে নিক্ষেপ করা হয় এবং উপযুক্ত ক্যাচ ব্লকের মধ্যে প্রক্রিয়া করা হয়।
নিক্ষেপের ত্রুটি
ক্রমানুসারে সংজ্ঞায়িত শেষ ক্যাচ ব্লকের পরে স্বাভাবিক সম্পাদন (যখন কোনো ব্যতিক্রম চেষ্টা ব্লকের মধ্যে নিক্ষেপ করা হয় না) চলতে থাকবে।
উদাহরণ
<?php function div($x, $y) { if (!$y) { throw new Exception('Division by zero.'); } return $x/$y; } try { echo div(10,5) . "\n"; echo div(10,0) . "\n"; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } // Continue execution echo "Execution continues\n"; ?>
আউটপুট
নিম্নলিখিত আউটপুট প্রদর্শিত হয়
2 Caught exception: Division by zero. Execution continues
নিম্নলিখিত উদাহরণে, TypeError একটি ফাংশন চালানোর সময় নিক্ষেপ করা হয় কারণ এতে উপযুক্ত আর্গুমেন্ট পাস করা হয় না। সংশ্লিষ্ট ত্রুটি বার্তা প্রদর্শিত হয়
উদাহরণ
<?php function add(int $num1, int $num2){ return $num1 + $num2; } try { $value = add(1, 'one'); } catch (TypeError $e) { echo $e->getMessage(). "\n"; } ?>
আউটপুট
নিম্নলিখিত আউটপুট প্রদর্শিত হয়
Argument 2 passed to add() must be of the type integer, string given
SPL ব্যতিক্রম
স্ট্যান্ডার্ড PHP লাইব্রেরিতে পূর্বনির্ধারিত ব্যতিক্রম রয়েছে
LogicException | ব্যতিক্রম যা প্রোগ্রাম লজিকে ত্রুটি উপস্থাপন করে। |
BadFunctionCallException | একটি কলব্যাক যদি একটি অনির্ধারিত ফাংশনকে নির্দেশ করে বা কিছু আর্গুমেন্ট অনুপস্থিত থাকে তাহলে ব্যতিক্রম নিক্ষেপ করা হয়৷ |
BadMethodCallException | যদি একটি কলব্যাক একটি অনির্ধারিত পদ্ধতিকে নির্দেশ করে বা কিছু আর্গুমেন্ট অনুপস্থিত থাকে তাহলে ব্যতিক্রম নিক্ষেপ করা হয়৷ |
ডোমেন ব্যতিক্রম | একটি মান একটি সংজ্ঞায়িত বৈধ ডেটা ডোমেনে না মানলে ব্যতিক্রম নিক্ষেপ করা হয়৷ |
InvalidArgumentException | একটি যুক্তি প্রত্যাশিত ধরনের না হলে ব্যতিক্রম নিক্ষেপ করা হয়। |
দৈর্ঘ্য ব্যতিক্রম | একটি দৈর্ঘ্য অবৈধ হলে ব্যতিক্রম নিক্ষেপ করা হয়। |
OutOfRangeException | একটি অবৈধ সূচক অনুরোধ করা হলে ব্যতিক্রম নিক্ষেপ করা হয়। |
RuntimeException | একটি ত্রুটি যা শুধুমাত্র রানটাইমে পাওয়া যায় তা হলে ব্যতিক্রম নিক্ষেপ করা হয়। |
OutOfBoundsException | একটি মান বৈধ কী না হলে ব্যতিক্রম নিক্ষেপ করা হয়। |
ওভারফ্লো ব্যতিক্রম | একটি সম্পূর্ণ পাত্রে একটি উপাদান যোগ করার সময় ব্যতিক্রম নিক্ষেপ করা হয়। |
রেঞ্জ ব্যতিক্রম | প্রোগ্রাম এক্সিকিউশনের সময় পরিসরের ত্রুটিগুলি নির্দেশ করতে ব্যতিক্রম নিক্ষেপ করা হয়েছে। আন্ডার/ওভারফ্লো ছাড়া অন্য একটি গাণিতিক ত্রুটি। |
UnderflowException | একটি খালি কন্টেইনারে একটি অবৈধ ক্রিয়াকলাপ সম্পাদন করার সময় ব্যতিক্রম নিক্ষেপ করা হয়, যেমন একটি উপাদান সরানো৷ |
UnexpectedValueException | একটি মান যদি মানের সেটের সাথে মেলে না তাহলে ব্যতিক্রম নিক্ষেপ করা হয়। |
নিম্নলিখিত উদাহরণ দেখায় OutOfBoundsException PHP অ্যারেতে একটি কী পাওয়া না গেলে নিক্ষেপ করা হয়
উদাহরণ
<?php $arr=array("one"=>1, "two"=>2,"three"=>3,"four"=>4); $key="ten"; try{ if (array_key_exists($key, $arr)==FALSE){ throw new OutOfBoundsException("key not found");} else { echo $arr[$key];} } catch (OutOfBoundsException $e){ echo $e->getMessage(). "\n"; } ?>
আউটপুট
নিম্নলিখিত আউটপুট প্রদর্শিত হয়
key not found