Lanzar excepciones múltiples en Java
Este tutorial demostrará cómo lanzar múltiples excepciones en Java.
Las excepciones son los eventos no deseados e inesperados que interrumpen el flujo normal de las instrucciones durante la ejecución del programa. La clase raíz de todas las excepciones de Java es java.lang.Throwable
. Esta clase la heredan las subclases de error y excepción.
Para manejar las excepciones, usamos los bloques try...catch
.
En el bloque try
colocamos el código que puede generar alguna excepción. El bloque try
no se utiliza solo. Siempre debe ir seguido de catch
o finally
. El bloque catch
se utiliza para capturar la excepción. Este bloque puede ir seguido del bloque finalmente. El bloque finally
se utiliza para ejecutar el código importante del programa sin importar si hay una excepción o no.
En Java, es posible que tengamos que lidiar con múltiples excepciones. No es posible lanzar numerosas excepciones en Java. Podemos especificar varias excepciones, pero solo se lanzará una de ellas.
Sin embargo, tenemos algunas alternativas que podemos usar para simular el lanzamiento de múltiples excepciones.
Podemos usar excepciones encadenadas para tratar con múltiples excepciones. Tales excepciones indican que la excepción planteada es causada por otra excepción.
Por ejemplo,
public class Main {
public static void main(String[] args) {
try {
NumberFormatException ex = new NumberFormatException("NumberFormatException is thrown");
ex.initCause(new NullPointerException("NullPointerException is the main cause"));
throw ex;
}
catch (NumberFormatException ex) {
System.out.println(ex);
System.out.println(ex.getCause());
}
}
}
Producción :
java.lang.NumberFormatException: NumberFormatException is raised
java.lang.NullPointerException: NullPointerException is the main cause
Tenga en cuenta el uso de los métodos initCause()
y getCause()
. La función initCause()
establece la causa de la excepción como otra excepción y getCause()
devolverá la causa de la excepción, en nuestro caso es NullPointerException
.
También podemos utilizar excepciones suprimidas. Aquí adjuntamos excepciones suprimidas a la excepción principal. Se agregó en Java 7.
Para adjuntar excepciones suprimidas, usamos la función addSuppressed()
. Usamos esta función con el objeto principal de excepción.
Por ejemplo,
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
try {
Exception suppressed = new NumberFormatException();
Exception suppressed2 = new NullPointerException();
final Exception exe = new Exception();
exe.addSuppressed(suppressed);
exe.addSuppressed(suppressed2);
throw exe;
}
catch (Throwable e) {
Throwable[] suppExe = e.getSuppressed();
System.out.println("Suppressed:");
for (int i = 0; i < suppExe.length; i++) {
System.out.println(suppExe[i]);
}
}
}
}
Producción :
Suppressed:
java.lang.NumberFormatException
java.lang.NullPointerException
En el ejemplo anterior, adjuntamos dos excepciones al objeto principal e imprimimos las excepciones suprimidas. Para obtener todas las excepciones suprimidas, usamos la función getSuppressed()
.
Artículo relacionado - Java Exception
- Arreglar Java.Net.SocketException: error de tubería rota en Java
- Clase de excepción Java Throwable VS
- Comprender la excepción de tiempo de ejecución en Java
- Corrija la excepción Java.Net.BindException: la dirección ya está en uso: Bind
- El proceso de Java Gateway se cerró antes de enviar su número de puerto
- Excepción de entrada no válida en Java