CodeGym /Cursos /Sintaxis Java Cero /Lanzar excepciones

Lanzar excepciones

Sintaxis Java Cero
Nivel 15 , Lección 3
Disponible

1. throwoperador

Cuando un bloque captura una excepción catch, y hasta que se lanza a la máquina Java, es solo un objeto que hereda Exception(o más bien, Throwable). El objeto de excepción en sí mismo no tiene propiedades mágicas.

Toda la lógica de cómo funcionan las excepciones es solo una forma especial en que la máquina Java se comporta cuando se le lanza una excepción.

Siempre puede volver a generar una excepción detectada en la máquina Java. Para hacer esto, necesita usar el throwoperador:

throw exception;

Ejemplo:

Código Salida de consola
try
{
   int d = 2/0;
}
catch(Exception except)
{
   System.out.println("Caught the exception");
   throw except;
}
Caught the exception

En este código, detectamos una excepción, mostramos un mensaje al respecto en la pantalla y luego la volvimos a generar.

Una excepción que se vuelve a generar no puede ser capturada por otros catchbloques en el mismo trybloque.


2. Sus excepciones

Por cierto, puede crear un objeto de excepción usted mismo: es solo un objeto cuyo tipo es Exceptiono una clase que lo hereda. Y tirarlo.

Es más fácil de lo que parece. Ejemplo:

Código Salida de consola
try
{
   throw new RuntimeException();
}
catch(Exception except)
{
   System.out.println("Caught the exception");
   throw except;
}
Caught the exception

En el ejemplo anterior, creamos un nuevo objeto de excepción cuyo tipo es RuntimeExceptione inmediatamente lo lanzamos usando el throwoperador.

El bloque lo atrapará de inmediato catch, ya que RuntimeException hereda Exception. El catch (Exception except)código captura objetos de excepción de todas las clases que heredan la Exceptionclase.



3. finallypalabra clave

Otro punto importante. A veces, un programador necesita realizar alguna acción independientemente de si se produjo una excepción en el código. Por ejemplo, supongamos que abrimos un archivo para escribir. El archivo abierto debe cerrarse llamando a close().

try
{
   // Code where an exception might occur
}
catch(ExceptionType name)
{
   // Exception handling code
}
finally
{
   // Code that must executed no matter what happens
}

Para realizar estas acciones obligatorias, finallyse agregó otro tipo de bloque ( ) a la try-catchconstrucción, creando así la try-catch-finallyconstrucción. Se parece a esto:

Ejemplo:

FileInputStream source = null;
try
{
   source = new FileInputStream("c:\\note.txt");
   source.read();
}
catch(Exception except)
{
   System.out.println("Caught the exception");
   throw except;
}
finally
{
   if (source != null)
      source.close();
}

El código del finallybloque se ejecutará en cualquier caso, independientemente de si hubo una excepción. Incluso si se lanza una excepción y no se captura, el finallybloque seguirá ejecutándose.

Por cierto, si no desea capturar una excepción, pero necesita un finallybloque, use la notación abreviada para la try-catch-finallyconstrucción: un try-finallybloque. Se ve algo como esto:

try
{
   // Code where an exception might occur
}
finally
{
   // Code that must executed no matter what happens
}

Comentarios (4)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
tokenizer Nivel 22
10 diciembre 2024
Hay que estar atentos en el primer ejercicio. PISTA: tiene que ver con mayúsculas y minúsculas
Javier Rodriguez Nivel 37, Bogota, Colombia
9 octubre 2024
El segundo ejercicio lo tenía igual a la solución, pero no pasaba el primer punto
Javier Rodriguez Nivel 37, Bogota, Colombia
9 octubre 2024
El código del primer ejercicio lo tengo igual pero no me aprueba. Ejecuto el de la solución y pasa.
Javier Rodriguez Nivel 37, Bogota, Colombia
9 octubre 2024
Ah ya ví porqué era. La palabra "OK" se debe escribir en minúsculas