2010-01-08 12 views
14

¿Alguien puede explicar cómo manejar las excepciones de tiempo de ejecución en Java?Manejo de RuntimeExceptions en Java

+0

Creo que los que no aceptan SO han descubierto que esas son amenazas vacías. ¡Queremos puntos mod! – danben

+1

¿Nunca he visto aceptar el botón en ninguna parte? – Ravikanth

+0

Es la marca de gran tic/corrección al lado de una respuesta. – Gordon

Respuesta

34

No difiere del manejo de una excepción regulares:

try { 
    someMethodThatThrowsRuntimeException(); 
} catch (RuntimeException ex) { 
    // do something with the runtime exception 
} 
+0

puede detectar las excepciones de tiempo de ejecución ...? – Ravikanth

+3

¡Por supuesto! Todas las subclases de 'Throwable' pueden ser atrapadas. –

+0

No veo un problema con esta pregunta: tenía un Runnable que sospechaba que estaba causando un error de tiempo de ejecución y no era consciente de que podía simplemente ajustar cualquier código en una captura/captura y agregar una captura RunTimeException. "Googled'Android manejando excepciones de tiempo de ejecución", esta fue la primera pregunta que surgió y esta respuesta proporcionó lo que necesitaba. Seguramente eso es exactamente como debería funcionar SO? – Mitch

4

Si conoce el tipo de excepción que podrían ser lanzada, se puede coger de forma explícita. También puede tomar Exception, pero esto generalmente se considera una mala práctica porque trataría Excepciones de todo tipo de la misma manera.

En general, el objetivo de una excepción RuntimeException es que no se puede manejar correctamente y no se espera que se ejecuten durante la ejecución normal de su programa.

+0

Excepto, quizás, cuando un componente personalizado lanza una RuntimeException porque no puede llegar a un determinado host a través de la red y está bloqueando su aplicación de Android. –

2

Simplemente los atrapa, como cualquier otra excepción.

try { 
    somethingThrowingARuntimeException() 
} 
catch (RuntimeException re) { 
    // Do something with it. At least log it. 
} 
1
No

seguro si usted se refiere directamente a RuntimeException en Java, por lo que va a suponer que estamos hablando acerca de las excepciones de tiempo de ejecución.

La idea básica del manejo de excepciones en Java es que encapsula el código que espera que pueda generar una excepción en una instrucción especial, como se muestra a continuación.

try { 
    // Do something here 
} 

Luego, maneja la excepción.

catch (Exception e) { 
    // Do something to gracefully fail 
} 

Si necesita ciertas cosas para ejecutar independientemente de si se produce una excepción, añadir finally.

finally { 
    // Clean up operation 
} 

En conjunto, se ve así.

try { 
    // Do something here 
} 
catch (AnotherException ex) { 
} 
catch (Exception e) { //Exception class should be at the end of catch hierarchy. 
} 
finally { 
} 
+0

podemos atrapar la excepción de tiempo de ejecución? ¿Como es posible? sin conocer la excepción de tiempo de ejecución, ¿cómo la detectamos programáticamente? – Ravikanth

+0

Puede usar 'catch (ExceptionType name) {}' para capturar cualquier tipo de excepción. De lo contrario, puede usar 'catch {}' para captar todas las excepciones, o 'catch (Exception name) {}' para captar todas las excepciones (y tener la información sobre ellas a su alcance. –

+0

@Ed: es correcto. Pero si recibí un error en el servidor (problema de carga) .Esto es una excepción de tiempo de ejecución. ¿Cómo captaremos esta excepción de forma programática? ¿Es posible? – Ravikanth

-1
try { 
      // a snippet resulting in Runtime Excception 
     } catch (Throwable e) { 
      e.printStackTrace(); 
      //Sys out or some logging 
     } 

De esta manera podemos manejar el tiempo de ejecución Excception.

+3

Como práctica recomendada, no se aconseja capturar "Throwable". Los errores también son throwables y no se deben detectar errores, que identifican problemas de jvm. Capture excepciones en su lugar. – lemiorhan

+0

@otuzbesli Gracias por su consejo. – chetan