2012-03-15 27 views
5
public class ThrowException { 
    public static void main(String[] args) { 
     try { 
      foo(); 
     } 
     catch(Exception e) { 
      if (e instanceof IOException) { 
       System.out.println("Completed!"); 
      } 
      } 
    } 
    static void foo() { 
     // what should I write here to get an exception? 
    } 
} 

¡Hola! Acabo de empezar a aprender excepciones y necesito tomar una decisión, así que, ¿puede alguien darme una solución? Estaría muy agradecido. Gracias!cómo lanzar una IOException?

+0

¿Cuál es 'foo' y cómo se relaciona con' a '? –

+1

Esta es solo la sintaxis básica de Java que cualquier libro o introducción a Java le enseñará. Sugiero leer algo. – ColinD

Respuesta

15
static void foo() throws IOException { 
    throw new IOException("your message"); 
} 
+0

¿debo escribir esto en el método foo? –

+0

Sí. Si se alcanza esta línea, se lanzará una excepción. –

+1

tenga en cuenta que el método foo debe declararse para lanzar la excepción. de lo contrario, obtendrás un error de compilación – ewok

6
try { 
     throw new IOException(); 
    } catch(IOException e) { 
     System.out.println("Completed!"); 
    } 
1
throw new IOException("Test"); 
1

acabo de empezar excepciones aprendizaje y la necesidad de capturar una excepción

lanzar una excepción

throw new IOException("Something happened") 

Para detectar esta excepción es mejor no use Exception bec ausa es mucho más genérico, en cambio, detectar la excepción específica que usted sabe cómo manejar:

try { 
    //code that can generate exception... 
}catch(IOException io) { 
    // I know how to handle this... 
} 
1

Si el objetivo es lanzar la excepción del método foo(), tiene que declarar como sigue:

public void foo() throws IOException{ 
    \\do stuff 
    throw new IOException("message"); 
} 

Luego, en su principal:

public static void main(String[] args){ 
    try{ 
     foo(); 
    } catch (IOException e){ 
     System.out.println("Completed!"); 
    } 
} 

Tenga en cuenta que, a menos que se declare foo para lanzar una IOException, intentar coger uno dará lugar a un error de compilación. Codificarlo usando un catch (Exception e) y un instanceof evitará el error del compilador, pero no es necesario.

0

Tal vez esto ayude ...

Nota de la manera más clara para capturar las excepciones en el siguiente ejemplo - que no es necesario el e instanceof IOException.

public static void foo() throws IOException { 
    // some code here, when something goes wrong, you might do: 
    throw new IOException("error message"); 
} 

public static void main(String[] args) { 
    try { 
     foo(); 
    } catch (IOException e) { 
     System.out.println(e.getMessage()); 
    } 
} 
1

Por favor, intente el siguiente código:

throw new IOException("Message"); 
Cuestiones relacionadas