Manipulação de exceções Java (com exemplos)

No tutorial, aprenderemos sobre diferentes abordagens de tratamento de exceções em Java com a ajuda de exemplos.

No último tutorial, aprendemos sobre as exceções Java. Sabemos que as exceções encerram anormalmente a execução de um programa.

É por isso que é importante lidar com exceções. Aqui está uma lista de diferentes abordagens para lidar com exceções em Java.

  • tente … pegar o bloco
  • finalmente bloquear
  • jogar e jogar palavra-chave

1. Java try … catch block

O bloco try-catch é usado para tratar exceções em Java. Esta é a sintaxe do try… catchbloco:

 try ( // code ) catch(Exception e) ( // code )

Aqui, colocamos o código que pode gerar uma exceção dentro do trybloco. Cada trybloco é seguido por um catchbloco.

Quando ocorre uma exceção, ela é capturada pelo catchbloco. O catchbloco não pode ser usado sem o trybloco.

Exemplo: tratamento de exceções usando try… catch

 class Main ( public static void main(String() args) ( try ( // code that generate exception int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )

Resultado

 ArithmeticException => / por zero

No exemplo, estamos tentando dividir um número por 0. Aqui, este código gera uma exceção.

Para lidar com a exceção, colocamos o código, 5 / 0dentro do trybloco. Agora, quando ocorre uma exceção, o resto do código dentro do trybloco é ignorado.

O catchbloco captura a exceção e as instruções dentro do bloco catch são executadas.

Se nenhuma das instruções no trybloco gerar uma exceção, o catchbloco será ignorado.

2. Java finalmente bloqueia

Em Java, o finallybloco é sempre executado independentemente de haver uma exceção ou não.

O finallybloqueio é opcional. E, para cada trybloco, pode haver apenas um finallybloco.

A sintaxe básica do finallybloco é:

 try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )

Se ocorrer uma exceção, o finallybloco é executado após o try… catchbloco. Caso contrário, ele é executado após o bloco try. Para cada trybloco, pode haver apenas um finallybloco.

Exemplo: Manipulação de exceções Java usando finally block

 class Main ( public static void main(String() args) ( try ( // code that generates exception int divideByZero = 5 / 0; ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) finally ( System.out.println("This is the finally block"); ) ) )

Resultado

 ArithmeticException => / por zero Este é o bloco final

No exemplo acima, estamos dividindo um número por 0 dentro do trybloco. Aqui, este código gera um ArithmeticException.

A exceção é capturada pelo catchbloco. E então o finallybloco é executado.

Nota : É uma boa prática usar o finallybloco. É porque pode incluir códigos de limpeza importantes, como,

  • código que pode ser acidentalmente ignorado por retornar, continuar ou quebrar
  • fechando um arquivo ou conexão

3. Java throw e throws palavra-chave

A throwpalavra-chave Java é usada para lançar explicitamente uma única exceção.

Quando somos throwuma exceção, o fluxo do programa passa de um trybloco para outro catch.

Exemplo: tratamento de exceções usando Java throw

 class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )

Resultado

 Exceção no thread "main" java.lang.ArithmeticException: Tentando dividir por 0 em Main.divideByZero (Main.java:5) em Main.main (Main.java:9)

No exemplo acima, estamos jogando explicitamente o ArithmeticExceptionusing a throwpalavra - chave.

Da mesma forma, a throwspalavra-chave é usada para declarar o tipo de exceções que podem ocorrer dentro do método. É usado na declaração do método.

Exemplo: Java throws keyword

 import java.io.*; class Main ( // declareing the type of exception public static void findFile() throws IOException ( // code that may generate IOException File newFile = new File("test.txt"); FileInputStream stream = new FileInputStream(newFile); ) public static void main(String() args) ( try ( findFile(); ) catch (IOException e) ( System.out.println(e); ) ) )

Resultado

 java.io.FileNotFoundException: test.txt (O sistema não pode encontrar o arquivo especificado)

Quando executamos este programa, se o arquivo test.txt não existe, FileInputStreamlança um FileNotFoundExceptionque estende a IOExceptionclasse.

O findFile()método especifica que um IOExceptionpode ser lançado. O main()método chama esse método e trata a exceção se ela for lançada.

Se um método não trata exceções, o tipo de exceções que podem ocorrer dentro dele deve ser especificado na throwscláusula.

Para saber mais, visite Java throw and throws.

Artigos interessantes...