¿Cuál es la diferencia entre tirar vs. lanza en Java

Publicado: 2013-07-23

¿Cuál es la diferencia entre tirar vs. lanza en Java

Uno lo declara y el otro lo hace.

Hay cinco palabras clave relacionadas con el manejo de excepciones en Java, por ejemplo , probar, atrapar, finalmente, lanzar y lanzar . Además de la diferencia entre final, finalmente y finalizar , throw vs throws es una de las preguntas más frecuentes en las entrevistas de Java.

  • La palabra clave throw se usa para lanzar una excepción desde cualquier método o bloque estático en Java, mientras que la palabra clave throws , utilizada en la declaración del método, indica qué excepción puede ser lanzada por este método. No son intercambiables.
  • Si algún método arroja una excepción marcada como se muestra en el ejemplo a continuación, la persona que llama puede manejar esta excepción captándola o puede volver a lanzarla declarando otra cláusula throws en la declaración del método.
  • La cláusula Throw se puede usar en cualquier parte del código en la que sienta que se debe lanzar una excepción específica al método de llamada.

Subestimando las excepciones de Java:

Si un método lanza una excepción, debe estar rodeado por un bloque try catch para atraparla o ese método debe tener la cláusula throws en su firma. Sin la cláusula throws en la firma, el compilador Java JVM no sabe qué hacer con la excepción. La cláusula throws le dice al compilador que esta excepción en particular sería manejada por el método de llamada.

A continuación se muestra un ejemplo muy simple que explica el comportamiento de los bloques Throw, Throws, Try, Catch, Finalmente en Java.

Resultado:

Excepción de puntero nulo - Crunchify

Ahora simplemente reemplace las líneas 45 y 46 con la línea de abajo para ver el resultado a continuación:

Nuevo resultado:

Lista de todos los tutoriales de Java que le pueden interesar.

Consejos adicionales sobre excepciones:

  • La ejecución normal del programa se bifurca inmediatamente cuando se lanza una excepción.
  • Las excepciones marcadas deben capturarse o reenviarse. Esto se puede hacer en una sentencia try... catch o definiendo la excepción en la definición del método.
  • La excepción es capturada por el primer bloque catch cuya clase de excepción asociada coincide con la clase o una superclase de la excepción lanzada.
  • Si no se encuentra ningún bloque catch coincidente en la cadena de excepción, el subproceso que contiene la excepción lanzada finaliza.
  • El bloque finalmente después de una sentencia try... catch se ejecuta independientemente de si se detecta una excepción o no.
  • Regresar dentro de un bloque finalmente rompe la cadena de excepciones al invocador incluso para excepciones no detectadas.