जावा में हम एक खास प्रकार के अपवाद पकड़ कर सकते हैं:जावा एक अपवाद की पहचान ठीक
try{
// Code that does IO like download a file...
}catch(IOException ioe){
ioe.printStackTrace();
// handle ioe
}catch(SomeOtherException soe){
// handle soe
}
अब, वहाँ एक अपवाद बनाने के लिए कई कारणों से, इस मामले में, IOException
हो सकता है कर सकते हैं:
java.io.IOException: Illegal character in path at index.....
एक विशिष्ट पुस्तकालय या कुछ अन्य तरह से
:
java.io.IOException: Stream closed ...
अगर कुछ गलत हो गया है Stream
अब, मेरा सवाल है, मैं कैसे निर्धारित करूं कि किस प्रकार का IOException
हुआ?
मैं Stream closed
और Illegal character in path at index...
के बीच कैसे अंतर कर सकता हूं?
बेशक मैं केवल अपवाद संदेश की स्ट्रिंग की जांच कर सकता हूं लेकिन मुझे नहीं लगता कि यह अंतर्निहित लाइब्रेरी/कार्यान्वयन संदेश स्ट्रिंग को बदल सकता है क्योंकि यह सबसे अच्छा तरीका है।
संपादित करें:
e.getClass()
इस मामले में लगभग सब कुछ के लिए रिटर्न java.io.IOException
...
मैं पुस्तकालय के लिए अपने स्वयं IOException
फेंकता है, जबकि किसी भी मूल Exception
की निकालने लगता है।
मैंने आपको वापस ले लिया है क्योंकि यह एकमात्र उत्तर है जो 'IOEeception' को देखता है और जानता है कि यह एक ठोस प्रकार है। मुझे नहीं पता कि कोई आपको पहले स्थान पर क्यों गिराएगा ... – tom91136
@ होवरक्राफ्टफुलऑफेल 'प्रिंटस्टैकट्रेस' विधि 'toString' विधि पर निर्भर करती है। 'थ्रोबल' कार्यान्वयन 'getClass()। GetName() 'के साथ वर्ग का नाम प्रिंट करता है। इसलिए जब तक 'StreamClosedException'' IOException' क्लास नाम को वापस करने के लिए अपने 'toString' को ओवरराइड नहीं करता है, तो ठोस प्रकार 'IOException' है। –
@ सॉटिरियोसेलिमैनोलिस: क्षमा करें। –