Sintaxe:
A sintaxe de o tentar-pegar-finalmente bloco é dado abaixo.
tentardeclaração 1 ... N
catch (ExceptiontType var)
declaração 1 ... N
finalmente
declaração 1 ... N
Aqui, se ocorrer uma exceção dentro do bloco try, a exceção será lançada no bloco catch, e o bloco finally é opcional aqui. O código do bloco finally executa independentemente de ocorrer uma exceção ou não.
Exemplo-1: Tratamento de exceções com um único bloco catch
O exemplo a seguir mostra o uso de tratamento de exceções usando um único bloco catch. Um nome de arquivo será usado como entrada e criará um objeto de BufferedReader para abrir um arquivo para leitura. Se o nome do arquivo existir, o conteúdo do arquivo será lido linha por linha e impresso. Se o arquivo não existir, uma exceção será gerada e uma mensagem de erro será impressa.
importar java.io.BufferedReader;importar java.io.FileReader;
importar java.io.IOException;
importar java.util.Scanner;
public class except1
public static void main (String [] args)
// Crie um objeto Scanner
Scanner em = novo Scanner (Sistema.dentro);
Sistema.Fora.print ("Digite o nome do arquivo:");
// Pega dados de string do usuário
String FileName = em.Next();
tentar
// Cria um objeto leitor
Leitor BufferedReader = novo BufferedReader (novo FileReader (FileName));
// Leia a primeira linha se o arquivo existir
String line = leitor.Leia a linha();
while (linha != null)
// Imprime a linha
Sistema.Fora.println (linha);
// Leia a próxima linha
linha = leitor.Leia a linha();
// Fechar o objeto leitor
leitor.perto();
// Fechar o objeto do scanner
dentro.perto();
catch (IOException e)
// Imprime a mensagem de erro
Sistema.Fora.println ("Arquivo não existe");
Resultado:
Na seguinte saída, 'Olá.TXT' é fornecido como um nome de arquivo que não existe. Portanto, a seguinte mensagem é impressa.
Próxima vez, arquivo1.TXT é dado como o nome do arquivo que existe, e a saída mostra o conteúdo do arquivo.
Exemplo-2: Tratamento de exceções com vários blocos catch
Como você pode usar vários blocos catch para lidar com várias exceções é mostrado no exemplo a seguir. Aqui, três blocos catch são declarados. O primeiro bloco catch irá capturar o erro aritmético quando qualquer operação aritmética ilógica for realizada. O segundo catch bock irá capturar o erro fora do intervalo do array quando um valor de índice do array for tentado para ler que não existe. O terceiro bloco catch irá capturar o erro de valor numérico quando qualquer caractere ou valor de string for dado como um valor de array. No código, uma matriz com quatro índices é declarada e inicializada com os valores inteiros que serão obtidos do usuário. Os valores da matriz são impressos usando um loop. Uma operação de divisão é feita no final do bloco try.
importar java.util.Scanner;classe pública, exceto 2
public static void main (String [] args)
tentar
// Declara uma matriz numérica
int num_arr [] = novo int [4];
// Crie um objeto Scanner
Scanner em = novo Scanner (Sistema.dentro);
Sistema.Fora.println ("Digite quatro números:");
// Repita o loop quatro vezes
para (int i = 0; i < 4; i++)
//Número de entrada
int n = em.nextInt ();
// Atribuir valor ao array
num_arr [i] = n;
Sistema.Fora.println ("Os valores da matriz são:");
// Repete o loop cinco vezes
para (int i = 0; i < 4; i++)
// Imprime os valores da matriz
Sistema.Fora.println (num_arr [i]);
// Divida e imprima o valor
int num = 50/0;
Sistema.Fora.imprimir (num);
// Fechar o objeto do scanner
dentro.perto();
catch (ArithmeticException e)
Sistema.Fora.println ("Nenhum número é divisível por 0");
catch (ArrayIndexOutOfBoundsException e)
Sistema.Fora.println ("Ocorreu um valor de índice fora da matriz");
catch (exceção e)
Sistema.Fora.println ("Valor numérico não fornecido");
Resultado:
A saída a seguir mostra que os valores da matriz são inseridos e impressos corretamente, mas o terceiro bloco catch é executado porque 50 é dividido por 0, o que é um erro.
O programa é executado pela segunda vez. Quando um valor de string é fornecido como um valor de array, a segunda exceção é gerada e a instrução do segundo bloco catch é executada.
Exemplo 3: Tratamento de exceções com bloco try-catch-finally
O uso do bloco finally com o bloco try-catch é mostrado no exemplo a seguir. O código do bloco final é executado se ocorrer uma exceção ou não. No código, um valor inteiro será obtido do usuário. Se o usuário fornecer qualquer valor de string, então InputMismatchException
irá gerar e imprimir a mensagem do bloco catch. O objeto do scanner será fechado no finalmente bloquear se a exceção gera ou não.
importar java.util.Scanner;importar java.util.InputMismatchException;
classe pública, exceto 3
public static void main (String [] args)
// Criar um objeto Scanner
Scanner em = novo Scanner (Sistema.dentro);
Sistema.Fora.print ("Digite um número:");
tentar
// Pega dados de string do usuário
número int = em.nextInt ();
// Imprime o número
Sistema.Fora.println ("O valor do número =" + número);
catch (InputMismatchException e)
// Imprimir mensagem de erro
Sistema.Fora.println ("O valor da string não é aceito.");
finalmente
// Fechar o objeto do scanner
dentro.perto();
Sistema.Fora.println ("Terminado do programa");
Resultado:
78 é dado como valor de entrada na seguinte saída após a execução do código. Portanto, nenhuma exceção é gerada aqui. A mensagem do bloco final é impressa mais tarde.
Próximo, Olá é dado como entrada após a execução do código que é uma string. Então, a exceção é gerada e a mensagem de erro do bloco catch é impressa. A mensagem do bloco final é impressa mais tarde.
Conclusão:
O tratamento de exceções é um recurso muito importante e útil de qualquer linguagem de programação que pode ser usada para ocultar a mensagem de erro real do usuário e fornecer a mensagem de erro legível para o usuário entender o erro corretamente. Este tutorial ajuda o usuário a aprender diferentes maneiras de aplicar o tratamento de exceções em Java e tornar seu código mais apropriado.