logo

Tratamento de exceções em Java

  1. Manipulação de exceção
  2. Vantagem do tratamento de exceções
  3. Hierarquia de classes de exceção
  4. Tipos de exceção
  5. Exemplo de exceção
  6. Cenários onde uma exceção pode ocorrer

O Tratamento de exceções em Java é um dos poderosos mecanismo para lidar com os erros de tempo de execução para que o fluxo normal da aplicação possa ser mantido.

Neste tutorial, aprenderemos sobre exceções Java, seus tipos e a diferença entre exceções verificadas e não verificadas.

lançar lances em java

O que é exceção em Java?

Significado do Dicionário: A exceção é uma condição anormal.

Em Java, uma exceção é um evento que interrompe o fluxo normal do programa. É um objeto que é lançado em tempo de execução.

O que é tratamento de exceções?

Tratamento de exceções é um mecanismo para lidar com erros de tempo de execução, como ClassNotFoundException, IOException, SQLException, RemoteException, etc.

Vantagem do tratamento de exceções

A principal vantagem do tratamento de exceções é para manter o fluxo normal da aplicação . Uma exceção normalmente interrompe o fluxo normal do aplicativo; é por isso que precisamos lidar com exceções. Vamos considerar um cenário:

 statement 1; statement 2; statement 3; statement 4; statement 5;//exception occurs statement 6; statement 7; statement 8; statement 9; statement 10; 

Suponha que existam 10 instruções em um programa Java e ocorra uma exceção na instrução 5; o restante do código não será executado, ou seja, as instruções 6 a 10 não serão executadas. Porém, quando realizamos o tratamento de exceções, o restante das instruções será executado. É por isso que usamos o tratamento de exceções em Java .

Você sabe?
  • Qual é a diferença entre exceções verificadas e não verificadas?
  • O que acontece por trás do código int data=50/0;?
  • Por que usar vários blocos catch?
  • Existe alguma possibilidade quando o bloco final não for executado?
  • O que é propagação de exceção?
  • Qual é a diferença entre as palavras-chave throw e throws?
  • Quais são as 4 regras para usar o tratamento de exceções com substituição de método?

Hierarquia de classes de exceção Java

A classe java.lang.Throwable é a classe raiz da hierarquia Java Exception herdada por duas subclasses: Exception e Error. A hierarquia das classes de exceção Java é fornecida abaixo:

hierarquia de tratamento de exceções

Tipos de exceções Java

Existem basicamente dois tipos de exceções: verificadas e não verificadas. Um erro é considerado a exceção não verificada. No entanto, de acordo com a Oracle, existem três tipos de exceções, a saber:

  1. Exceção verificada
  2. Exceção não verificada
  3. Erro
hierarquia de tratamento de exceções

Diferença entre exceções verificadas e não verificadas

1) Exceção verificada

As classes que herdam diretamente a classe Throwable, exceto RuntimeException e Error, são conhecidas como exceções verificadas. Por exemplo, IOException, SQLException, etc. As exceções verificadas são verificadas em tempo de compilação.

2) Exceção não verificada

As classes que herdam RuntimeException são conhecidas como exceções não verificadas. Por exemplo, ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, etc. Exceções não verificadas não são verificadas em tempo de compilação, mas são verificadas em tempo de execução.

3) Erro

O erro é irrecuperável. Alguns exemplos de erros são OutOfMemoryError, VirtualMachineError, AssertionError etc.

Palavras-chave de exceção Java

Java fornece cinco palavras-chave que são usadas para tratar a exceção. A tabela a seguir descreve cada um.

Palavra-chaveDescrição
tentarA palavra-chave 'try' é usada para especificar um bloco onde devemos colocar um código de exceção. Isso significa que não podemos usar o bloco try sozinho. O bloco try deve ser seguido por catch ou finalmente.
pegarO bloco 'catch' é usado para tratar a exceção. Deve ser precedido pelo bloco try, o que significa que não podemos usar o bloco catch sozinho. Pode ser seguido por finalmente bloquear mais tarde.
finalmenteO bloco 'finalmente' é usado para executar o código necessário do programa. Ele é executado independentemente de uma exceção ser tratada ou não.
lançarA palavra-chave 'throw' é usada para lançar uma exceção.
lançaA palavra-chave 'throws' é usada para declarar exceções. Especifica que pode ocorrer uma exceção no método. Não lança uma exceção. É sempre usado com assinatura de método.

Exemplo de tratamento de exceção Java

Vamos ver um exemplo de tratamento de exceções Java no qual estamos usando uma instrução try-catch para tratar a exceção.

JavaExceptionExample.java

 public class JavaExceptionExample{ public static void main(String args[]){ try{ //code that may raise exception int data=100/0; }catch(ArithmeticException e){System.out.println(e);} //rest code of the program System.out.println('rest of the code...'); } } 
Teste agora

Saída:

 Exception in thread main java.lang.ArithmeticException:/ by zero rest of the code... 

No exemplo acima, 100/0 gera uma ArithmeticException que é tratada por um bloco try-catch.

Cenários comuns de exceções Java

Existem alguns cenários em que podem ocorrer exceções não verificadas. Eles são os seguintes:

1) Um cenário onde ocorre ArithmeticException

Se dividirmos qualquer número por zero, ocorre uma ArithmeticException.

 int a=50/0;//ArithmeticException 

2) Um cenário onde ocorre NullPointerException

Se tivermos um valor nulo em qualquer variável , executar qualquer operação na variável gera uma NullPointerException.

 String s=null; System.out.println(s.length());//NullPointerException 

3) Um cenário onde ocorre NumberFormatException

Se a formatação de qualquer variável ou número for incompatível, isso poderá resultar em NumberFormatException. Suponha que temos um corda variável que possui caracteres; converter esta variável em dígito causará NumberFormatException.

 String s='abc'; int i=Integer.parseInt(s);//NumberFormatException 

4) Um cenário onde ocorre ArrayIndexOutOfBoundsException

Quando uma matriz excede seu tamanho, ocorre ArrayIndexOutOfBoundsException. pode haver outros motivos para ocorrer ArrayIndexOutOfBoundsException. Considere as seguintes afirmações.

 int a[]=new int[5]; a[10]=50; //ArrayIndexOutOfBoundsException 

Índice de exceções Java

  1. Bloco Try-Catch Java
  2. Bloco de captura múltipla Java
  3. Tentativa aninhada de Java
  4. Java finalmente bloco
  5. Palavra-chave Java Throw
  6. Propagação de exceção Java
  7. Java lança palavra-chave
  8. Lançamento Java vs Lançamentos
  9. Java Final vs Finalmente vs Finalizar
  10. Tratamento de exceções Java com substituição de método
  11. Exceções personalizadas Java