Capture Múltiplas Exceções em Java

Rupam Yadav 12 outubro 2023
  1. Capture várias exceções usando várias instruções Catch em Java
  2. Capture Múltiplas Exceções Usando instanceOf em Java
  3. Capture Múltiplas Exceções em um Bloco Catch Usando | em Java
Capture Múltiplas Exceções em Java

Hoje, veremos as maneiras como podemos usar e capturar várias exceções em Java. Uma exceção em Java ocorre quando um evento indesejado ocorre durante o tempo de execução. A maneira mais comum de ver uma exceção é usar as palavras-chave try-catch. Aqui, o try contém o bloco de código a ser verificado e o catch contém o código para mostrar quando ocorre uma exceção.

Verificaremos os três métodos para usar várias exceções em uma única captura com os exemplos a seguir.

Capture várias exceções usando várias instruções Catch em Java

No exemplo, pegamos as duas entradas do tipo int do usuário e depois as dividimos para mostrar o resultado. Observe que incluímos esse código em um bloco try; isso significa que ele deve ter um bloco catch também.

Múltiplas exceções podem ser lançadas como InputMismatchException quando o valor inserido não é do tipo int e ArithmeticException quando num2 obtém o valor zero porque nenhum número é dividido por zero. Podemos lançar uma Exception que é o pai de todas as outras exceções.

Para capturar todos eles, escrevemos três blocos catch diferentes com seus tipos de exceção e imprimimos a mensagem para mostrar quando essa exceção ocorre. A saída mostra os diferentes resultados quando não há exceção e quando há exceções.

import java.util.InputMismatchException;
import java.util.Scanner;

public class MultiExceptions {
  public static void main(String[] args) {
    System.out.println("Enter two numbers: ");
    Scanner sc = new Scanner(System.in);
    try {
      System.out.println("num1: ");
      int num1 = sc.nextInt();

      System.out.println("num2: ");
      int num2 = sc.nextInt();

      int dividedNum = num1 / num2;

      System.out.println("After division result: " + dividedNum);

    } catch (InputMismatchException e1) {
      System.out.println("Error! - Please enter a number.");
    } catch (ArithmeticException e2) {
      System.out.println("Error! - You cannot divide any number with 0");
    } catch (Exception e3) {
      System.out.println("An error occurred please try again!");
    }
  }
}

Produto 1:

Enter two numbers : num1 : 10 num2 : 2 After division result : 5

Produto 2:

Enter two numbers : num1 : 50 num2 : hhh Error !-Please enter a number.

Produto 3:

Enter two numbers : num1 : 10 num2 : 0 Error !-You cannot divide any number with 0

Capture Múltiplas Exceções Usando instanceOf em Java

Outro método que você pode fazer inclui usar a função instanceOf, que verifica se um objeto é do tipo fornecido ou não; ele retorna um valor booleano. Usamos o mesmo exemplo acima, mas aqui usamos um único bloco catch com várias instruções if.

Conforme discutido acima, a Exceção é a classe pai das exceções mais comuns. Podemos usar seu objeto para verificar se a exceção lançada é do tipo fornecido. Aqui, revisamos as duas exceções: InputMismatchException e ArithmeticException.

import java.util.InputMismatchException;
import java.util.Scanner;

public class MultiExceptions {
  public static void main(String[] args) {
    System.out.println("Enter two numbers: ");
    Scanner sc = new Scanner(System.in);
    try {
      System.out.println("num1: ");
      int num1 = sc.nextInt();

      System.out.println("num2: ");
      int num2 = sc.nextInt();

      int dividedNum = num1 / num2;

      System.out.println("After division result: " + dividedNum);

    } catch (Exception e) {
      if (e instanceof InputMismatchException) {
        System.out.println("Error! - Please enter a number.");
      } else if (e instanceof ArithmeticException) {
        System.out.println("Error! - You cannot divide any number with 0");
      } else {
        System.out.println("An error occurred please try again!");
      }
    }
  }
}

Resultado:

Enter two numbers: 
num1: 
d
Error! - Please enter a number.

Capture Múltiplas Exceções em um Bloco Catch Usando | em Java

No Java 7 e posterior, podemos usar o símbolo de pipe ou bit a bit OR para escrever várias exceções em uma única captura. No exemplo, dividimos os dois números inseridos e, em seguida, verificamos se alguma das duas exceções é verdadeira. Se for verdade, a mensagem de erro será impressa.

import java.util.InputMismatchException;
import java.util.Scanner;

public class MultiExceptions {
  public static void main(String[] args) {
    System.out.println("Enter two numbers: ");
    Scanner sc = new Scanner(System.in);
    try {
      System.out.println("num1: ");
      int num1 = sc.nextInt();

      System.out.println("num2: ");
      int num2 = sc.nextInt();

      int dividedNum = num1 / num2;

      System.out.println("After division result: " + dividedNum);

    } catch (InputMismatchException | ArithmeticException e) {
      System.out.println("An error occurred please try again");
    }
  }
}

Resultado:

Enter two numbers: 
num1: 
f
An error occurred please try again
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artigo relacionado - Java Exception