Tente Catch em Java:Exemplo de manipulação de exceção
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 encapsula 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 da exceção?
- Como lidar com exceção
- Experimente o bloqueio de captura
- Hierarquia de classe de exceção Java
- Java finalmente bloquear
Existem dois tipos de erros:
- Erros de tempo de compilação
- 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ê o declarou erroneamente como 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 Exceções erro. É 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 dos desenvolvedores.
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 real da produção, o servidor está inativo. Quando seu programa tentou acessá-lo, uma exceção é gerada.
Como lidar com exceção
Até agora vimos, a exceção está além do controle do desenvolvedor. Mas culpar sua falha de código por questões ambientais não é uma solução. Você precisa de uma Programação Robusta, que cuide de situações excepcionais. Esse código é conhecido como Tratador 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 tradicionais if e else).
Você verificará se o servidor está inativo. Se sim, 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 manipular.
class connect{ if(Server Up){ // code to connect to server } else{ // code to connect to BACKUP server } }
Experimente o bloqueio de captura
Java fornece um tratamento excepcional embutido.
- O código normal vai para um TRY bloquear.
- O código de tratamento de exceção vai para o CATCH bloquear
Em nosso exemplo, o bloco TRY conterá o código para se conectar ao servidor. O bloco CATCH conterá o código para conectar ao servidor de backup.
Caso o servidor esteja ativo, o código no bloco CATCH será ignorado. Caso o servidor esteja inativo, uma exceção é lançada 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 ver como o try e catch nos ajudará a lidar com essa exceção. Colocaremos a exceção causando a linha de código em um try bloco, seguido por uma captura quadra. 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) Salve, compile e execute o código. Você obterá a seguinte saída
Como você observa, a exceção é tratada e a última linha de código também é executada. Além disso, observe que a linha 7 não será executada porque assim que uma exceção é gerada, o fluxo de controle salta para o bloco catch.
Observação: 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 de 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 devem ocorrer em circunstâncias normais pelo nosso programa, por exemplo, erro de memória, erro de hardware, erro de JVM, etc.
- A classe Exception representa as exceções que podem ser tratadas pelo nosso programa, e nosso programa pode ser recuperado dessa 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 exceção que ocorre em tempo de execução e que não pode ser rastreada em tempo de compilação. Um excelente exemplo disso é dividir por exceção zero, ou exceção de ponteiro nulo, etc
- A exceção de E/S é 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) Um ArrayIndexOutOfBoundsException é gerado. Altere o valor de int d para 0. Salve, compile e execute o código.
Etapa 4 ) Um ArithmeticException deve ser gerado.
Etapa 5) Retire 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 que é levantada por ArithmeticException pode ser tratada pela classe Exception também. Assim, 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 bloquear
O bloco finally é executado independentemente de uma exceção ser levantada no bloco de tentativas. É opcional para usar com um bloco try.
try { statement(s) } catch (ExceptiontType name) { statement(s) } finally { statement(s) }
Caso uma exceção seja levantada no bloco try, o bloco finally é executado após a execução do bloco catch.
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) Salve, compile e execute 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.Bottom of Form
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 é referida como 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 manipulação excepcional embutido
- O Manipulador de Exceções é um conjunto de códigos que trata uma exceção . As exceções podem ser tratadas em Java usando try &catch.
- Tentar bloquear :o código normal vai neste bloco.
- Bloqueio de captura :Se houver erro no código normal, ele irá para este bloco
Java
- Manipulação de Exceções do Python Usando a instrução try, except e finally
- Manipulação de Exceções Java
- Java tentar... pegar
- Java captura múltiplas exceções
- Manipulação de Exceções C++:Try, Catch, Throw Exemplo
- Método Java String charAt() com exemplo
- Java String EndsWith() Método com Exemplo
- Java BufferedReader:Como Ler Arquivo em Java com Exemplo
- Algoritmo de ordenação por inserção em Java com exemplo de programa
- Manipulação de exceção do Python:tente, pegue, finalmente e aumente [Exemplo]