क्या किसी ने कभी भी किसी भी बंद करने योग्य वस्तु पर बंद विधि को कॉल करते समय एक अपवाद फेंक दिया है?क्या आपने कभी जावा फ़ाइल बंद() अपवाद फेंक दिया है?
उत्तर
IOException
close
पर फेंक दिया जाएगा यदि अंतिम flush
विफल रहता है। संभावित कारणों में शामिल:
- फाइल सिस्टम भरा हुआ है, या उपयोगकर्ता कोटा खत्म हो गया है,
- हार्ड डिस्क त्रुटियों,
- एक फाइल सिस्टम जबरन अनमाउंट किए,
- एक दूरस्थ फाइल सिस्टम की वजह से अनुपलब्ध है नेटवर्किंग या अन्य समस्याओं,
- (संभवतः) एक वर्ण एन्कोडिंग त्रुटि है, तो एक
OutputStreamWriter
या इसी तरह के माध्यम से फाइल करने के लिए लेखन, - एक डिवाइस त्रुटि है, तो "फाइल" एक उपकरण फ़ाइल है, करने के लिए +०१२३५१६४१०
- एक खो कनेक्शन यदि closeable एक नेटवर्क धारा है,
- एक टूटी हुई पाइप अगर closeable बाहरी प्रक्रिया के लिए एक पाइप है,
- और इतने पर।
मैंने निश्चित रूप से इनमें से कुछ को देखा है। दूसरों की संभावना नहीं है।
हालांकि, यदि आप जो डेटा लिख रहे हैं वह महत्वपूर्ण है तो आपको close
विफल होने की अनुमति देनी चाहिए। उदाहरण के लिए, यदि आपका एप्लिकेशन एक महत्वपूर्ण फाइल लिख रहा है, तो फाइल सिस्टम भर जाता है, तो आपके एप्लिकेशन को छंटनी वाले संस्करण के साथ फ़ाइल की पुरानी प्रतिलिपि बदलने से पहले बेहतर नोटिस किया गया था।
मुझे लगता है कि आप डिस्क को अनप्लग करके अपनी फ़ाइल चालू कर सकते हैं। लेकिन किसी भी Closable
पर? मुझे लगता है कि बंद करने पर अपवाद फेंकने के लिए सॉकेट का उपयोग करने वाला कुछ ऐसा आसान होगा।
मेरे पास नहीं है, लेकिन यह संभव है। कल्पना करें कि OutputStream
है कि किसी कारण से अभी तक फ़ाइल में नहीं लिखा है। खैर, close()
को कॉल करना डेटा को फ्लश करेगा, लेकिन अगर फ़ाइल लॉक है - तो IOException
उठाया जाएगा।
हां, यह दुर्लभ नहीं है, IMHO यदि आप गैर-स्थानीय डिस्क फ़ाइलों के अलावा किसी अन्य चीज़ के साथ काम कर रहे हैं।
बंद करें() उस बिंदु पर काम करता है यदि आपका बंद करने योग्य अभी भी वैध और खुला है। पाइप, रिमोट फाइल इत्यादि जैसी कई चीजें समय से मर सकती हैं।
इसके अलावा, मैंने कोड देखा है जो खुले और लिखने पर त्रुटियों को अनदेखा करता है और अभी भी बंद करने की कोशिश करता है (उदाहरण के लिए, अंततः ब्लॉक में)।
फ़ाइल-आईओ के मामले में नहीं, लेकिन सॉकेट के मामले में करीब IOException
उठाएगा जब दूसरी तरफ कनेक्शन को निरस्त कर दिया जाएगा। उदाहरण के लिए, जब आप एक (बड़े) वेबपृष्ठ पर HTTP अनुरोध को आग लगाते हैं और फिर वेबपृष्ठ पर एक और लिंक पर क्लिक करके तुरंत नेविगेट करते हैं (जब यह लोडिंग समाप्त नहीं होता है), तो सर्वर पक्ष को IOException
(या उप-वर्ग ClientAbortException
टॉमकैट सर्वर और क्लोन में) जब HTTP प्रतिक्रिया के आउटपुटस्ट्रीम को फ्लश/बंद किया जाना है।
मेरे पास है - mocks के खिलाफ मेरी इकाई परीक्षण में;)
उस पर एक खुली फ़ाइल के साथ एक यूएसबी ड्राइव yanking कोशिश करो। अगर यह अपवाद नहीं देता है तो मैं बहुत आश्चर्यचकित हूं।
पुरानी पोस्ट और लंबे समय के बाद से उत्तर दिया, लेकिन यहाँ एक वास्तविक उदाहरण है:
निम्नलिखित कोड बाहर सिवाय होगा जब bufferedWriter.close() कहा जाता है। ऐसा इसलिए होता है क्योंकि BufferedWriter के अंतर्निहित राइटर (फ़ाइलवाइटर) को पहले ही बंद कर दिया गया है और जब BufferedWriter बंद हो जाता है, तो यह पहले अपने बफर में किसी भी डेटा को इसके अंतर्निहित राइटर में फ्लश करने का प्रयास करता है।
File newFile = new File("newFile.txt");
FileWriter fileWriter = new FileWriter(newFile);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write("Hello World");
fileWriter.close();
bufferedWriter.close();
नोट: वहाँ बफर में कोई डेटा उपलब्ध न तो [लिखने() लाइन बाहर टिप्पणी करते हैं या फ्लश() कॉल जोड़ने] तो कोई अपवाद नहीं
+1। – sleske
- 1. जावा में अंकगणित अपवाद फेंक दिया गया
- 2. कस्टम अपवाद फेंक दिया गया है अगर कस्टम अपवाद
- 3. स्काला: अपवाद को बंद करने के अंदर फेंक दिया
- 4. ब्रेक जब अपवाद फेंक दिया जाता है
- 5. phpunit फेंक दिया अपवाद अपवाद 'PHPUnit_Framework_Exception
- 6. जब एक अपवाद फेंक दिया है
- 7. एंड्रॉइड: अवैध स्तर अपवाद - इसे कब फेंक दिया जाता है?
- 8. एक फेंक दिया अपवाद में पाठ कहां जाता है?
- 9. फेंक अपवाद
- 10. VS2010 नई फ़ाइल फेंक दें संपत्ति सेट करें 'System.Windows.ResourceDictionary.DeferrableContent' ने अपवाद फेंक दिया
- 11. जावा file.createNewFile फ़ाइल नहीं बनाई गई और कोई अपवाद फेंक दिया गया
- 12. जावा इसे पकड़ने के बिना अपवाद फेंक रहा है?
- 13. StreamWriter.Write फ़ाइल में नहीं लिखता है; कोई अपवाद नहीं सी # में फेंक दिया
- 14. फेंक अपवाद
- 15. क्या आपने कभी ngen.exe का उपयोग किया है?
- 16. क्या आपने कभी "स्थिति" डिज़ाइन पैटर्न सुना है?
- 17. जावा सॉकेट मृत सॉकेट पर अपवाद फेंक नहीं रहा है?
- 18. फ़ाइल खोले जाने पर पृथक स्टोरेजफाइलस्ट्रीम अपवाद फेंक दिया जाता है?
- 19. क्या static_cast C++ में अपवाद फेंक सकता है?
- 20. कार्य समानांतर लाइब्रेरी INotifyProperty ने अपवाद फेंक दिया नहीं?
- 21. जावा चेक अपवाद फ़ंक्शन के फेंक विनिर्देशन में नहीं है?
- 22. symfony2 टहनी रेंडर, अपवाद मेरी आधार टेम्पलेट में फेंक दिया
- 23. 'NHibernate.LoggerProvider' के लिए प्रकार प्रारंभकर्ता ने एक अपवाद फेंक दिया
- 24. क्या ईडीटी पुनरारंभ होता है या नहीं जब अपवाद फेंक दिया जाता है?
- 25. क्या होता है यदि अंतिमकरण के दौरान कोई अपवाद फेंक दिया जाता है()
- 26. जावा: अपवाद स्वयं शून्य है
- 27. क्या रचनाकार जावा में अपवाद फेंक सकते हैं?
- 28. नई std :: अपवाद बनाम फेंक std :: अपवाद
- 29. आंतरिक अपवाद थ्रेडएक्सप्शन हैंडलर तक क्यों पहुंचता है और वास्तविक फेंक दिया अपवाद नहीं?
- 30. कस्टम अपवाद फेंक
दिलचस्प उत्पन्न हो जाएगा .. वास्तव में एक उदाहरण देने के लिए –