2010-09-19 13 views
8

He estado trabajando en este programa durante bastante tiempo y mi cerebro está frito. Podría usar algo de ayuda de alguien que esté buscando.¿Por qué estoy recibiendo "debe ser atrapado o declarado arrojado" en mi programa?

Estoy tratando de hacer un programa que lea un archivo de texto línea por línea y cada línea se haga en un ArrayList para que pueda acceder a cada token. ¿Qué estoy haciendo mal?

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); 
    } 
} 

Estoy a punto de sacar mis ojos. Tengo tres errores:

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) { 
             ^

¿Qué estoy haciendo mal?

Respuesta

13

Cuando trabaja con E/S en Java la mayor parte del tiempo tiene que manejar IOException que puede ocurrir en cualquier momento cuando lee/escribe o incluso cierra la secuencia.

Tienes que poner tu bloque sensible en un // bloque catch try y manejar la excepción aquí.

Por ejemplo:

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

Recursos:

+0

¿cómo hago eso? – Luron

+0

Lee el tutorial para ver ejemplos. – camickr

8

Java cheques especificaciones de excepción en tiempo de compilación. Debe capturar la excepción o declararla arrojada en la firma de su método. He aquí cómo usted declarar que puede ser lanzado de su método:

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

captura la excepción si el método tiene que hacer algo en respuesta. Declare que fue lanzado si su interlocutor necesita saber sobre el error.

Estas no son mutuamente excluyentes. A veces es útil detectar la excepción, hacer algo y volver a lanzar la excepción o una nueva excepción que envuelva el original (la "causa").

No es necesario declarar RuntimeException y sus subclases.

0

Los IDEs buenos crearán el bloque catch para usted o agregarán la excepción a la declaración del método.

Tenga en cuenta que si agrega las excepciones a la declaración del método según la solución de Colin, cualquier método que invoca su método también tendrá que tener un bloque catch adecuado o declarar la excepción en la declaración del método.

-3

He tenido el mismo problema. Lo solucioné añadiendo la biblioteca de primavera "org.springframework.core"

Cuestiones relacionadas