2012-11-04 35 views
19

java.io.IOException क्या अपवाद का सबसे आम प्रकार प्रतीत होता है, संयोग से यह सबसे अस्पष्ट लगता है। जब भी सॉकेट, फाइलें, & सी के साथ लिखते हैं, तो मैं throws IOException देखता रहता हूं। मैंने वास्तव में कभी मुझ पर फेंक दिया नहीं है, इसलिए, मैं सोच रहा हूं कि अपवाद को आग लगाना क्या है। क्या हो रहा है यह बताने में दस्तावेज़ीकरण बहुत उपयोगी नहीं है:जावा - आईओएक्सप्शन

सिग्नल कि किसी प्रकार का I/O अपवाद हुआ है। यह वर्ग विफल या बाधित I/O संचालन द्वारा उत्पादित अपवादों की सामान्य श्रेणी है।

क्या कोई ऐसे उदाहरणों को समझा सकता है जहां आईओएक्सप्शन फेंक दिया जाएगा, या इसका उपयोग कैसे किया जाना चाहिए।

+3

एक 'IOException' बस एक इनपुट या आउटपुट अपवाद है। जब लोग उनका उपयोग करते हैं, तो वे आम तौर पर एक और विशिष्ट त्रुटि को सामान्यीकृत करते हैं। [एपीआई] (http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html) में जावा एसई 6 में बनाए गए सभी विभिन्न प्रकार के आईओ अपवादों की एक सूची है। – Jon

+0

मुझे पता है कि IOException क्या है, मैं बस कुछ परिदृश्य चाहता था जो वे होने पर पूरी तरह से वर्णन करेंगे। – Zaq

उत्तर

36

मान लें कि इस प्रकार थे:

  1. नेटवर्क फ़ाइल पढ़ना और डिस्कनेक्ट हो गई।
  2. एक स्थानीय फ़ाइल पढ़ना जो अब उपलब्ध नहीं था।
  3. डेटा पढ़ने के लिए कुछ स्ट्रीम का उपयोग करना और कुछ अन्य प्रक्रिया ने स्ट्रीम को बंद कर दिया।
  4. फ़ाइल पढ़ने/लिखने की कोशिश कर रहा है लेकिन अनुमति नहीं है।
  5. फ़ाइल पर लिखने की कोशिश कर रहा है लेकिन डिस्क स्थान अब उपलब्ध नहीं था।

कई और उदाहरण हैं, लेकिन यह मेरे अनुभव में सबसे आम है।

5

सामान्य रूप से, I/O का अर्थ है इनपुट या आउटपुट। जब भी इनपुट या आउटपुट ऑपरेशन विफल हो जाता है या व्याख्या की जाती है तो वे विधियां IOException फेंकती हैं। ध्यान दें कि इसे मेमोरी पर पढ़ने या लिखने के लिए नहीं फेंक दिया जाएगा क्योंकि जावा स्वचालित रूप से इसे संभालेगा।

यहां कुछ ऐसे मामले हैं जिनके परिणामस्वरूप IOException है।

  • एक बंद InputStream से पढ़ना
2

जावा प्रलेखन शुद्ध कनेक्शन के बिना इंटरनेट पर एक फ़ाइल का उपयोग करने की कोशिश करो विशेष IOException

बस है का मूल कारण पता करने के लिए उपयोगी है IOException पर प्रलेखन पृष्ठ से

ChangedCharSetException, CharacterCodingException, CharConversionException, ClosedChannelException, EOFException, FileLockInterruptionException, FileNotFoundException, FilerException, FileSystemException, HttpRetryException, IIOException, InterruptedByTimeoutException, InterruptedIOException, InvalidPropertiesFormatException, JMXProviderException, JMXServerErrorException, MalformedURLException, ObjectStreamException, ProtocolException, RemoteException, SaslException, SocketException, SSLException, SyncFailedException, UnknownHostException, UnknownServiceException, UnsupportedDataTypeException, UnsupportedEncodingException, UserPrincipalNotFoundException, UTFDataFormatException, ZipException

इनमें से अधिकतर अपवाद स्वयं व्याख्यात्मक हैं।

कुछ IOExceptions मूल कारणों के साथ:

EOFException: सिग्नल कि फ़ाइल या स्ट्रीम के अंत का अंत इनपुट के दौरान अप्रत्याशित रूप से हो चुकी है। इस अपवाद का मुख्य रूप से स्ट्रीम

SocketException: सिग्नल बनाने या एक्सेस करने में त्रुटि होने का संकेत देने के लिए फेंक दिया गया है।

RemoteException: रिमोटएक्सप्शन एक दूरस्थ विधि कॉल के निष्पादन के दौरान होने वाले कई संचार-संबंधित अपवादों के लिए सामान्य सुपरक्लास है। रिमोट इंटरफ़ेस की प्रत्येक विधि, एक इंटरफ़ेस जो java.rmi.Remote को बढ़ाता है, को इसके फेंकने वाले खंड में रिमोटएक्सप्शन सूचीबद्ध करना होगा।

UnknownHostException: यह इंगित करने के लिए फेंक दिया गया कि मेजबान का आईपी पता निर्धारित नहीं किया जा सका। (आप इंटरनेट से कनेक्ट नहीं हो सकते हैं)

MalformedURLException: यह इंगित करने के लिए कि एक विकृत यूआरएल हुआ है। या तो विनिर्देश स्ट्रिंग में कोई कानूनी प्रोटोकॉल नहीं मिला या स्ट्रिंग को पार्स नहीं किया जा सका।