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
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