আমার একটি ইন্টারফেস পদ্ধতি রয়েছে যা ডকুমেন্টেশনে উল্লেখ করে যে এটি একটি নির্দিষ্ট ধরণের ব্যতিক্রম ছুঁড়ে দেবে। এই পদ্ধতির বাস্তবায়ন এমন কিছু ব্যবহার করে যা ব্যতিক্রম ছুঁড়ে ফেলে। অভ্যন্তরীণ ব্যতিক্রম ধরা পড়ে এবং ইন্টারফেস চুক্তি দ্বারা ঘোষিত ব্যতিক্রম নিক্ষেপ করা হয়। আরও ভাল ব্যাখ্যা করার জন্য এখানে একটি ছোট কোডের উদাহরণ। এটি পিএইচপিতে লেখা কিন্তু অনুসরণ করা বেশ সহজ।
// in the interface
/**
* @return This method returns a doohickey to use when you need to foo
* @throws DoohickeyDisasterException
*/
public function getThatDoohickey();
// in the implementation
public function getThatDoohickey() {
try {
$SomethingInTheClass->doSomethingThatThrowsAnException();
} catch (Exception $Exc) {
throw new DoohickeyDisasterException('Message about doohickey failure');
}
// other code may return the doohickey
}
আমি বিমূর্ততা ফাঁস হওয়া থেকে রোধ করার প্রয়াসে এই পদ্ধতিটি ব্যবহার করছি।
আমার প্রশ্নগুলি হল: পূর্ববর্তী ব্যতিক্রম হিসাবে নিক্ষিপ্ত অভ্যন্তরীণ ব্যতিক্রমটি কী বিমূর্ততা ফাঁস হবে? যদি তা না হয় তবে কেবল পূর্ববর্তী ব্যতিক্রমের বার্তাটি পুনরায় ব্যবহার করা কি উপযুক্ত হবে? যদি এটি বিমূর্ততা ফাঁস হয়ে যায় তবে আপনি কেন মনে করেন যে এটি কেন করে সে সম্পর্কে কোনও গাইডলাইন সরবরাহ করতে পারেন?
কেবল পরিষ্কার করার জন্য, আমার প্রশ্নে নিম্নলিখিত কোডের লাইনে পরিবর্তন জড়িত
throw new DoohickeyDisasterException($Exc->getMessage(), null, $Exc);
file_not_found
কোডটিতে একটি থাকতে পারে তবে তা একটি নিক্ষেপ করা উচিতfile_not_found_exception
। ব্যতিক্রমগুলি গ্রন্থাগার নির্দিষ্ট হতে হবে না ।