Experimente o Catch em Java: exemplo de tratamento de exceções

Índice:

Anonim

O que é exceção em Java?

Exceção em Java é um evento que interrompe a execução das instruções do programa e perturba o fluxo normal de execução do programa. É um objeto que envolve uma informação de evento de erro que ocorreu dentro de um método e é passada para o sistema de tempo de execução. Em Java, as exceções são usadas principalmente para indicar diferentes tipos de condições de erro.

Neste tutorial, você aprenderá-

  • O que é exceção?
  • Por que precisamos de exceção?
  • Como lidar com a exceção
  • Tentar Catch Block
  • Hierarquia da classe de exceção Java
  • Java finalmente bloco

Existem dois tipos de erros:

  1. Erros de tempo de compilação
  2. Erros de tempo de execução

Erros de tempo de compilação podem ser novamente classificados em dois tipos:

  • Erros de sintaxe
  • Erros Semânticos

Exemplo de erros de sintaxe:

Em vez de declarar

int a;você erroneamente declarou que in a;para qual compilador lançará um erro.

Exemplo: você declarou uma variável

int a;e depois de algumas linhas de código, você declara novamente um inteiro como int a;. Todos esses erros são destacados quando você compila o código.

Exemplo de erros de tempo de execução

Um erro de tempo de execução é chamado de erro de exceções . É qualquer evento que interrompa o fluxo normal de execução do programa.

Exemplos de exceções são, exceção aritmética, exceção de Nullpointer, exceção de divisão por zero, etc.

Exceções em Java são algo que está fora do controle do desenvolvedor.

Clique aqui se o vídeo não estiver acessível

Por que precisamos de exceção?

Suponha que você tenha codificado um programa para acessar o servidor. As coisas funcionaram bem enquanto você estava desenvolvendo o código.

Durante a execução de produção real, o servidor está inativo. Quando seu programa tentou acessá-lo, uma exceção é levantada.

Como lidar com a exceção

Até agora, vimos que a exceção está além do controle do desenvolvedor. Mas culpar a falha do código em questões ambientais não é uma solução. Você precisa de uma Programação Robusta, que cuida de situações excepcionais. Esse código é conhecido como Manipulador de exceções.

Em nosso exemplo, um bom tratamento de exceção seria, quando o servidor estiver inativo, conectar-se ao servidor de backup.

Para implementar isso, insira seu código para se conectar ao servidor (usando as condições if e else tradicionais).

Você verificará se o servidor está inativo. Em caso afirmativo, escreva o código para se conectar ao servidor de backup.

Essa organização de código, usando o loop "if" e "else", não é eficaz quando seu código tem várias exceções Java para tratar.

class connect{if(Server Up){// code to connect to server}else{// code to connect to BACKUP server}}

Tentar Catch Block

Java fornece um manuseio excepcional embutido.

  1. O código normal vai para um bloco TRY .
  2. O código de tratamento de exceção vai para o bloco CATCH

Em nosso exemplo, o bloco TRY conterá o código para se conectar ao servidor. O bloco CATCH conterá o código para se conectar ao servidor de backup.

Caso o servidor esteja ativo, o código do bloco CATCH será ignorado. Caso o servidor esteja inativo, uma exceção é levantada e o código no bloco catch será executado.

Então, é assim que a exceção é tratada em Java.

Sintaxe para usar try & catch

try{statement(s)}catch (exceptiontype name){statement(s)}

Exemplo

Etapa 1) Copie o seguinte código em um editor

class JavaException {public static void main(String args[]){int d = 0;int n = 20;int fraction = n/d;System.out.println("End Of Main");}}

Etapa 2) Salve o arquivo e compile o código. Execute o programa usando o comando java JavaException

Etapa 3) Uma exceção aritmética - a divisão por zero é mostrada abaixo para a linha 5 e a linha 6 nunca é executada

Etapa 4) Agora, vamos examinar como try e catch nos ajudará a lidar com essa exceção. Colocaremos a exceção que causa a linha de código em um bloco try , seguido por um bloco catch . Copie o código a seguir no editor.

class JavaException {public static void main(String args[]) {int d = 0;int n = 20;try {int fraction = n / d;System.out.println("This line will not be Executed");} catch (ArithmeticException e) {System.out.println("In the catch Block due to Exception = " + e);}System.out.println("End Of Main");}}

Etapa 5) Salvar, compilar e executar o código. Você obterá a seguinte saída

Conforme você observa, a exceção é tratada e a última linha do código também é executada. Além disso, observe que a linha # 7 não será executada porque , assim que uma exceção é levantada, o fluxo de controle salta para o bloco catch.

Nota: O objeto AritmeticException "e" carrega informações sobre a exceção que ocorreu, o que pode ser útil na execução de ações de recuperação.

Hierarquia da classe de exceção Java

Depois que uma instrução catch é executada, as outras são ignoradas e a execução continua após o bloco try / catch. Os blocos catch aninhados seguem a hierarquia de exceção.
  • Todas as classes de exceção em Java estendem a classe 'Throwable'. Throwable tem duas subclasses, Error e Exception
  • A classe Error define a exceção ou os problemas que não são esperados que ocorram em circunstâncias normais por nosso programa, exemplo de erro de memória, erro de hardware, erro de JVM, etc.
  • A classe Exception representa as exceções que podem ser tratadas por nosso programa, e nosso programa pode ser recuperado desta exceção usando o bloco try e catch
  • Uma exceção de tempo de execução é uma subclasse da classe de exceção. A exceção desse tipo representa a exceção que ocorre no tempo de execução e que não pode ser rastreada no tempo de compilação. Um excelente exemplo disso é a exceção de divisão por zero ou exceção de ponteiro nulo, etc.
  • A exceção IO é gerada durante as operações de entrada e saída
  • Exceções interrompidas em Java são geradas durante vários encadeamentos.
Exemplo: para entender o aninhamento de blocos try e catch

Etapa 1) Copie o código a seguir em um editor.

class JavaException {public static void main(String args[]) {try {int d = 1;int n = 20;int fraction = n / d;int g[] = {1};g[20] = 100;}/*catch(Exception e){System.out.println("In the catch block due to Exception = "+e);}*/catch (ArithmeticException e) {System.out.println("In the catch block due to Exception = " + e);} catch (ArrayIndexOutOfBoundsException e) {System.out.println("In the catch block due to Exception = " + e);}System.out.println("End Of Main");}}

Etapa 2) Salve o arquivo e compile o código. Execute o programa usando o comando java JavaException .

Etapa 3) Uma ArrayIndexOutOfBoundsException é gerada. Altere o valor de int d para 0. Salve, compile e execute o código.

Etapa 4 ) Um ArithmeticException deve ser gerado.

Etapa 5) Remova o comentário da linha # 10 para a linha # 12. Salve, compile e execute o código.

Etapa 6) Erro de compilação? Isso ocorre porque Exception é a classe base de ArithmeticException Exception. Qualquer exceção gerada por ArithmeticException também pode ser tratada pela classe Exception. Portanto, o bloco catch de ArithmeticException nunca terá a chance de ser executado, o que o torna redundante. Daí o erro de compilação.

Java finalmente bloco

O bloco finally é executado independentemente de uma exceção ser gerada no bloco try. É opcional usar com um bloco try.

 try {statement(s)} catch (ExceptiontType name) {statement(s)} finally {statement(s)}

No caso, uma exceção é levantada no bloco try, o bloco finalmente é executado após o bloco catch ser executado.

Exemplo

Etapa 1) Copie o código a seguir em um editor.

class JavaException {public static void main(String args[]){try{int d = 0;int n =20;int fraction = n/d;}catch(ArithmeticException e){System.out.println("In the catch block due to Exception = "+e);}finally{System.out.println("Inside the finally block");}}}

Etapa 2) Salvar, compilar e executar o código.

Etapa 3) Saída esperada. Finalmente o bloco é executado mesmo que uma exceção seja levantada.

Etapa 4) Altere o valor da variável d = 1. Salve, compile e execute o código e observe a saída. Fundo do formulário

Resumo :

  • Uma exceção é um erro em tempo de execução que interrompe o fluxo normal de execução do programa. A interrupção durante a execução do programa é chamada de erro ou exceção.
  • Os erros são classificados em duas categorias
    • Erros de tempo de compilação - erros de sintaxe, erros de semântica
    • Erros de tempo de execução - exceção
  • Um programa robusto deve lidar com todas as exceções e continuar com seu fluxo normal de execução do programa. Java fornece um método de manuseio excepcional embutido
  • Manipulador de exceções é um conjunto de códigos que trata de uma exceção . As exceções podem ser tratadas em Java usando try & catch.
  • Bloco de teste : o código normal é inserido neste bloco.
  • Bloco de captura : se houver erro no código normal, ele irá para este bloco