2010-09-19 8 views
8

मैं इस कार्यक्रम पर काफी समय से काम कर रहा हूं और मेरा दिमाग तले हुए हैं। मैं किसी से देखकर कुछ मदद कर सकता हूं।मुझे अपने प्रोग्राम पर "पकड़ा जाना चाहिए या फेंकने की घोषणा क्यों हो रही है?"

मैं एक प्रोग्राम बनाने की कोशिश कर रहा हूं जो लाइन द्वारा टेक्स्ट फ़ाइल लाइन पढ़ता है और प्रत्येक पंक्ति ArrayList में बनाई जाती है, इसलिए मैं प्रत्येक टोकन तक पहुंच सकता हूं। मैं क्या गलत कर रहा हूं?

import java.util.*; 
import java.util.ArrayList; 
import java.io.*; 
import java.rmi.server.UID; 
import java.util.concurrent.atomic.AtomicInteger; 

public class PCB { 
    public void read (String [] args) { 
     BufferedReader inputStream = null; 

     try { 
      inputStream = new BufferedReader(new FileReader("processes1.txt")); 

      String l; 
      while ((l = inputStream.readLine()) != null) { 
       write(l); 
      } 
     } 
     finally { 
      if (inputStream != null) { 
       inputStream.close(); 
      } 
     } 
    } 

    public void write(String table) { 
     char status; 
     String name; 
     int priority; 

     ArrayList<String> tokens = new ArrayList<String>(); 

     Scanner tokenize = new Scanner(table); 
     while (tokenize.hasNext()) { 
      tokens.add(tokenize.next()); 
     } 

     status = 'n'; 
     name = tokens.get(0); 
     String priString = tokens.get(1); 
     priority = Integer.parseInt(priString); 

     AtomicInteger count = new AtomicInteger(0); 
     count.incrementAndGet(); 
     int pid = count.get(); 

     System.out.println("PID: " + pid); 
    } 
} 

मैं अपनी आंखों को बाहर निकालने वाला हूं। मुझे तीन त्रुटियां मिलीं:

U:\Senior Year\CS451- Operating Systems\Project1 PCB\PCB.java:24: unreported exception java.io.IOException; must be caught or declared to be thrown 
      inputStream.close();} 
          ^
U:\Senior Year\CS451- Operating Systems\Project1 PCB\PCB.java:15: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown 
     inputStream = new BufferedReader(new FileReader("processes1.txt")); 
             ^
U:\Senior Year\CS451- Operating Systems\Project1 PCB\PCB.java:18: unreported exception java.io.IOException; must be caught or declared to be thrown 
     while ((l = inputStream.readLine()) != null) { 
             ^

मैं क्या गलत कर रहा हूं?

उत्तर

13

जब आप जावा बार जब आप IOException जो किसी भी समय हो सकता है जब आप पढ़ने/लिखने या यहाँ तक कि धारा को बंद को संभालने के लिए है के अधिकांश में आई/ओ के साथ काम करते हैं।

आप एक कोशिश // कैच ब्लॉक में अपने संवेदनशील ब्लॉक डाल दिया और यहाँ अपवाद को संभालने के लिए है।

उदाहरण के लिए:

try{ 
    // All your I/O operations 
} 
catch(IOException ioe){ 
    //Handle exception here, most of the time you will just log it. 
} 

संसाधन:

+0

मैं कैसे करते हो कि हालांकि जोड़कर हल मिल गया? – Luron

+0

उदाहरण के लिए ट्यूटोरियल पढ़ें। – camickr

8

जावा संकलन समय पर अपवाद विनिर्देशों जाँच करता है। आपको या तो अपवाद पकड़ना होगा या इसे अपने विधि हस्ताक्षर में फेंक देना होगा। यहाँ आप कैसे घोषणा करेंगे कि यह आपके विधि से फेंका जा सकता है: अपने विधि जवाब में कुछ करने की जरूरत है

public void read (String [] args) throws java.io.IOException { 

पकड़ने अपवाद हैं। अगर आपके कॉलर को विफलता के बारे में पता होना चाहिए तो इसे फेंक दें।

इन परस्पर अनन्य नहीं हैं। कभी-कभी अपवाद को पकड़ने के लिए उपयोगी होता है, कुछ करें और अपवाद को दोबारा फेंक दें या एक नया अपवाद जो मूल ("कारण") को लपेटता है।

RuntimeException और उसके उपवर्गों घोषित करने की जरूरत नहीं है।

0

अच्छा IDEs या तो आप के लिए कैच ब्लॉक बनाने या विधि घोषणा करने के लिए अपवाद जोड़ देगा।

सलाह दीजिये कि यदि आप कॉलिन के समाधान के अनुसार विधि घोषणा में अपवाद जोड़ते हैं, तो आपकी विधि को आमंत्रित करने वाली कोई भी विधि भी उपयुक्त पकड़ ब्लॉक या विधि घोषणा में अपवाद घोषित करेगी।

-3

मुझे एक ही समस्या है। मैं यह वसंत पुस्तकालय "org.springframework.core"

संबंधित मुद्दे