मेरे पास एक इंटरफ़ेस विधि है जो प्रलेखन में बताती है कि यह एक विशेष प्रकार के अपवाद को फेंक देगी। उस पद्धति का कार्यान्वयन कुछ ऐसा उपयोग करता है जो एक अपवाद को फेंकता है। आंतरिक अपवाद पकड़ा गया है और इंटरफ़ेस अनुबंध द्वारा घोषित अपवाद फेंक दिया गया है। बेहतर तरीके से समझाने के लिए यहां थोड़ा कोड उदाहरण दिया गया है। यह PHP में लिखा है, लेकिन पालन करने के लिए बहुत सरल है।
// 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
। अपवाद पुस्तकालय विशिष्ट नहीं होने चाहिए ।