Manipulação de exceção de Java

Manipulação de exceção de Java
Quando o fluxo normal da execução do programa interrompe para qualquer erro, é chamado de exceção. Este tipo de evento pode ser tratado usando uma tentativa de finalização bloquear. Uma exceção é um objeto usado para capturar o erro e executar a declaração com base na condição de erro chamada de manuseio de exceção. Principalmente dois tipos de erro são tratados pelo manuseio de exceções. Estes são Tempo compilado erros e tempo de execução erros. O tempo de execução Os erros são tratados pelo manuseio de exceções. Como você pode lidar com exceções em Java é explicado neste tutorial.

Sintaxe:

A sintaxe de o Try-Catch-finalmente O bloco é dado abaixo.

tentar
Declaração 1… n

Catch (ExceptionTtype var)
Declaração 1… n

finalmente
Declaração 1… n

Aqui, se ocorrer uma exceção dentro do bloco de tentativa, a exceção será lançada ao bloco de captura, e o bloco finalmente é opcional aqui. O código do bloco finalmente executa se uma exceção ocorre ou não.

Exemplo 1: manuseio de exceção com um único bloco de captura

O exemplo a seguir mostra o uso do manuseio de exceções usando um único bloco de captura. Um nome de arquivo será tomado como entrada e criará um objeto do BufferredReader para abrir um arquivo para ler. 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.BufferredReader;
importar java.io.FileReader;
importar java.io.Ioexception;
importar java.util.Scanner;
classe pública, exceto1
public static void main (string [] args)
// Crie um objeto de scanner
Scanner in = novo scanner (sistema.em);
Sistema.fora.print ("Digite o nome do arquivo:");
// Pegue dados de string do usuário
String filename = em.próximo();
tentar
// Crie um objeto de leitor
BUBLEREDREADER LEITOR = NEW BUMBERREDER (NEW FileReader (nome do arquivo));
// Leia a primeira linha se o arquivo existir
Linha de string = leitor.Leia a linha();
while (linha != null)
// Imprima a linha
Sistema.fora.println (linha);
// Leia a próxima linha
linha = leitor.Leia a linha();

// Fechar o objeto do leitor
leitor.fechar();
// Fechar o objeto Scanner
em.fechar();
catch (ioexception e)
// Imprima a mensagem de erro
Sistema.fora.println ("arquivo não existe");


Saída:

Na saída a seguir, 'olá.TXT' é dado como o nome do arquivo que não existe. Portanto, a seguinte mensagem é impressa.

Próxima vez, arquivo1.TXT é dado como nome de arquivo que existe, e a saída mostra o conteúdo do arquivo.

Exemplo 2: Manuseio de exceção com vários blocos de captura

Como você pode usar vários blocos de captura para lidar com várias exceções é mostrado no exemplo a seguir. Aqui, três blocos de captura são declarados. O primeiro bloco de captura captura o erro aritmético quando qualquer operação aritmética ilógica for feita. O segundo Catch Bock pegará o erro fora do alcance da matriz quando um valor de índice de matriz será tentado ler que não existe. O terceiro bloco de captura capturará o erro de valor numérico quando qualquer caractere ou valor da string for dado como um valor de matriz. No código, uma matriz com quatro índices é declarada e inicializada com os valores inteiros que serão retirados do usuário. Os valores da matriz são impressos usando um loop. Uma operação de divisão é feita no final do bloco de tentativa.

importar java.util.Scanner;
classe pública, exceto 2
public static void main (string [] args)

tentar

// declarar uma matriz numérica
int num_arr [] = new int [4];
// Crie um objeto de scanner
Scanner in = novo scanner (sistema.em);
Sistema.fora.println ("Digite quatro números:");
// itera o loop quatro vezes
para (int i = 0; i < 4; i++)
//Número de entrada
int n = em.nextInt ();
// atribui valor à matriz
num_arr [i] = n;

Sistema.fora.println ("Os valores da matriz são:");
// itera o loop cinco vezes
para (int i = 0; i < 4; i++)
// Imprima os valores da matriz
Sistema.fora.println (num_arr [i]);

// Divida e imprima o valor
int num = 50/0;
Sistema.fora.impressão (num);
// Fechar o objeto Scanner
em.fechar();

captura (arithmeticexception e)

Sistema.fora.println ("Nenhum número é divisível por 0");

Catch (ArrayIndexoutOfBoundSexception e)

Sistema.fora.println ("Ocorreu o valor do índice fora da matriz");

Catch (Exceção e)

Sistema.fora.println ("O valor do número não é fornecido");


Saída:

A saída a seguir mostra que os valores da matriz são inseridos e impressos corretamente, mas o terceiro bloco de captura é executado porque 50 é dividido por 0, o que é um erro.

O programa é executado pela segunda vez. Quando um valor de string é dado como um valor de matriz, a segunda exceção é gerada e a declaração do segundo bloco de captura é executada.

Exemplo 3: Manuseio de exceção com bloqueio de Try-Catch-finalmente

O uso de finalmente o bloco com o bloco de tentativa é mostrado no exemplo a seguir. O código de finalmente o bloco é executado se ocorrer uma exceção ou não. No código, um valor inteiro será retirado do usuário. Se o usuário der algum valor de string, então InputMismatchException

irá gerar e imprimir a mensagem do bloco de captura. O objeto de scanner será fechado no finalmente Bloco se a exceção gera ou não.

importar java.util.Scanner;
importar java.util.InputMismatchException;
classe pública, exceto3
public static void main (string [] args)
// Crie um objeto de scanner
Scanner in = novo scanner (sistema.em);
Sistema.fora.print ("Digite um número:");
tentar
// Pegue dados de string do usuário
INT número = em.nextInt ();
// imprima o número
Sistema.fora.println ("o valor de número =" + número);
catch (inputMismatchException e)
// Mensagem de erro de impressão
Sistema.fora.println ("o valor da string não é aceito.");

finalmente
// Fechar o objeto Scanner
em.fechar();
Sistema.fora.println ("encerrado do programa");


Saída:

78 é dado como valor de entrada na saída a seguir após a execução do código. Portanto, nenhuma exceção é gerada aqui. A mensagem do bloco finalmente é impressa mais tarde.

Próximo, olá é dado como entrada após executar o código que é uma string. Portanto, a exceção é gerada e a mensagem de erro do bloco de captura é impressa. A mensagem do bloco finalmente é impressa mais tarde.

Conclusão:

O manuseio de exceção é um recurso muito importante e útil de qualquer linguagem de programação que possa ser usada para ocultar a mensagem de erro real do usuário e fornecer a mensagem de erro legível por humanos para o usuário entender o erro corretamente. Este tutorial ajuda o usuário a aprender diferentes maneiras de aplicar o manuseio de exceções em Java e tornar seu código mais apropriado.