logo

Bloco try-catch Java

Bloco de tentativa Java

Java tentar block é usado para incluir o código que pode gerar uma exceção. Deve ser usado dentro do método.

Se ocorrer uma exceção na instrução específica do bloco try, o restante do código do bloco não será executado. Portanto, é recomendável não manter o código no bloco try, pois não gerará uma exceção.

O bloco try Java deve ser seguido pelo bloco catch ou finalmente.

Sintaxe de try-catch Java

 try{ //code that may throw an exception }catch(Exception_class_Name ref){} 

Sintaxe do bloco try-finalmente

 try{ //code that may throw an exception }finally{} 

Bloco de captura Java

O bloco catch Java é usado para tratar a exceção, declarando o tipo de exceção dentro do parâmetro. A exceção declarada deve ser a exceção da classe pai (ou seja, Exception) ou o tipo de exceção gerado. No entanto, a boa abordagem é declarar o tipo de exceção gerada.

retornando arrays em java

O bloco catch deve ser usado somente após o bloco try. Você pode usar vários blocos catch com um único bloco try.

Funcionamento interno do bloco try-catch Java

Bloco try-catch Java

A JVM verifica primeiro se a exceção foi tratada ou não. Se a exceção não for tratada, a JVM fornece um manipulador de exceções padrão que executa as seguintes tarefas:

  • Imprime a descrição da exceção.
  • Imprime o stack trace (Hierarquia de métodos onde ocorreu a exceção).
  • Faz com que o programa seja encerrado.

Mas se o programador da aplicação tratar a exceção, o fluxo normal da aplicação será mantido, ou seja, o restante do código será executado.

Problema sem tratamento de exceção

Vamos tentar entender o problema se não usarmos um bloco try-catch.

Exemplo 1

TryCatchExample1.java

 public class TryCatchExample1 { public static void main(String[] args) { int data=50/0; //may throw exception System.out.println('rest of the code'); } } 
Teste agora

Saída:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

Como mostrado no exemplo acima, o resto do código não é executado (nesse caso, o resto do código declaração não é impressa).

Pode haver 100 linhas de código após a exceção. Se a exceção não for tratada, todo o código abaixo da exceção não será executado.

Solução por tratamento de exceções

Vamos ver a solução do problema acima por meio de um bloco try-catch java.

Exemplo 2

TryCatchExample2.java

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

Saída:

 java.lang.ArithmeticException: / by zero rest of the code 

Como mostrado no exemplo acima, o resto do código é executado, ou seja, o resto do código declaração é impressa.

Exemplo 3

Neste exemplo, também mantivemos o código em um bloco try que não lançará uma exceção.

TryCatchExample3.java

 public class TryCatchExample3 { public static void main(String[] args) { try { int data=50/0; //may throw exception // if exception occurs, the remaining statement will not exceute System.out.println('rest of the code'); } // handling the exception catch(ArithmeticException e) { System.out.println(e); } } } 
Teste agora

Saída:

 java.lang.ArithmeticException: / by zero 

Aqui, podemos ver que se ocorrer uma exceção no bloco try, o restante do código do bloco não será executado.

Exemplo 4

Aqui, tratamos a exceção usando a exceção da classe pai.

TryCatchExample4.java

 public class TryCatchExample4 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // handling the exception by using Exception class catch(Exception e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Teste agora

Saída:

 java.lang.ArithmeticException: / by zero rest of the code 

Exemplo 5

Vamos ver um exemplo para imprimir uma mensagem personalizada em caso de exceção.

TryCatchExample5.java

 public class TryCatchExample5 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // handling the exception catch(Exception e) { // displaying the custom message System.out.println('Can't divided by zero'); } } } 
Teste agora

Saída:

 Can't divided by zero 

Exemplo 6

Vejamos um exemplo para resolver a exceção em um bloco catch.

Rajinikanth

TryCatchExample6.java

 public class TryCatchExample6 { public static void main(String[] args) { int i=50; int j=0; int data; try { data=i/j; //may throw exception } // handling the exception catch(Exception e) { // resolving the exception in catch block System.out.println(i/(j+2)); } } } 
Teste agora

Saída:

 25 

Exemplo 7

Neste exemplo, junto com o bloco try, também incluímos o código de exceção em um bloco catch.

TryCatchExample7.java

ler do arquivo csv em java
 public class TryCatchExample7 { public static void main(String[] args) { try { int data1=50/0; //may throw exception } // handling the exception catch(Exception e) { // generating the exception in catch block int data2=50/0; //may throw exception } System.out.println('rest of the code'); } } 
Teste agora

Saída:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

Aqui podemos ver que o bloco catch não continha o código de exceção. Portanto, coloque o código de exceção em um bloco try e use o bloco catch apenas para lidar com as exceções.

Exemplo 8

Neste exemplo, tratamos a exceção gerada (Exceção Aritmética) com um tipo diferente de classe de exceção (ArrayIndexOutOfBoundsException).

TryCatchExample8.java

 public class TryCatchExample8 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // try to handle the ArithmeticException using ArrayIndexOutOfBoundsException catch(ArrayIndexOutOfBoundsException e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Teste agora

Saída:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

Exemplo 9

Vejamos um exemplo para lidar com outra exceção não verificada.

TryCatchExample9.java

 public class TryCatchExample9 { public static void main(String[] args) { try { int arr[]= {1,3,5,7}; System.out.println(arr[10]); //may throw exception } // handling the array exception catch(ArrayIndexOutOfBoundsException e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Teste agora

Saída:

 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

Exemplo 10

Vamos ver um exemplo para lidar com exceções verificadas.

TryCatchExample10.java

 import java.io.FileNotFoundException; import java.io.PrintWriter; public class TryCatchExample10 { public static void main(String[] args) { PrintWriter pw; try { pw = new PrintWriter('jtp.txt'); //may throw exception pw.println('saved'); } // providing the checked exception handler catch (FileNotFoundException e) { System.out.println(e); } System.out.println('File saved successfully'); } } 
Teste agora

Saída:

 File saved successfully