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.








