Lance Exceção Múltipla em Java

Lance Exceção Múltipla em Java

Este tutorial demonstrará como lançar várias exceções em Java.

As exceções são os eventos indesejados e inesperados que interrompem o fluxo normal das instruções durante a execução do programa. A classe raiz de todas as exceções Java é java.lang.Throwable. Esta classe é herdada pelas subclasses de erro e exceção.

Para lidar com exceções, usamos os blocos try...catch.

No bloco try, colocamos o código que pode gerar alguma exceção. O bloco try não é usado sozinho. Deve sempre ser seguido por catch ou finally. O bloco catch é usado para capturar a exceção. Este bloco pode ser seguido pelo bloco finally. O bloco finally é usado para executar o código importante do programa, independentemente de haver uma exceção ou não.

Em Java, podemos ter que lidar com várias exceções. Não é possível lançar várias exceções em Java. Podemos especificar várias exceções, mas apenas uma delas será lançada.

No entanto, temos algumas alternativas que podemos usar para simular o lançamento de múltiplas exceções.

Podemos usar exceções encadeadas para lidar com várias exceções. Essas exceções indicam que a exceção gerada é causada por outra exceção.

Por exemplo,

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());
    }
  }
}

Produção:

java.lang.NumberFormatException: NumberFormatException is raised
java.lang.NullPointerException: NullPointerException is the main cause

Observe o uso dos métodos initCause() e getCause(). A função initCause() define a causa da exceção como outra exceção e o getCause() retornará a causa da exceção, em nosso caso sendo NullPointerException.

Também podemos usar exceções suprimidas. Aqui, anexamos exceções suprimidas à exceção primária. Ele foi adicionado no Java 7.

Para anexar exceções suprimidas, usamos a função addSuppressed(). Usamos essa função com o objeto de exceção principal.

Por exemplo,

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]);
      }
    }
  }
}

Produção:

Suppressed:
java.lang.NumberFormatException
java.lang.NullPointerException

No exemplo acima, anexamos duas exceções ao objeto principal e imprimimos as exceções suprimidas. Para obter todas as exceções suprimidas, usamos a função getSuppressed().

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se

Artigo relacionado - Java Exception