Tratamento de exceções em Java
⚡ Resumo Inteligente
Java O tratamento de exceções fornece um mecanismo estruturado para gerenciar erros de tempo de execução que interrompem o fluxo normal do programa. Ele usa as palavras-chave `try`, `catch`, `finally`, `throw` e `throws` para detectar, isolar e recuperar-se de condições excepcionais, mantendo o fluxo normal do programa.ping Aplicações robustas e previsíveis.

O que é uma exceção em Java?
An Exceção em Java É um evento que interrompe a execução das instruções de um programa e perturba o fluxo normal de sua execução. Trata-se de um objeto que encapsula as informações de um evento de erro ocorrido dentro de um método e é passado para o sistema de tempo de execução. JavaAs exceções são usadas principalmente para sinalizar diferentes tipos de condições de erro, permitindo que os desenvolvedores respondam a elas de forma controlada.
Existem duas grandes categorias de erros em Java:
- Erros de tempo de compilação
- Erros de tempo de execução
Os erros de tempo de compilação podem ser classificados em dois tipos adicionais:
- Erros de sintaxe
- Erros Semânticos
Exemplo de erros de sintaxe:
Em vez de declarar int a; você erroneamente declarou isso como in a;, para o qual o compilador lançará um erro.
Exemplo de erros semânticos: Você declarou uma variável int a; e depois de algumas linhas de código você declara novamente um número 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 é denominado erro de execução. ExceçãoUma exceção é qualquer evento que interrompe o fluxo normal de execução de um programa. Exemplos de exceções incluem exceção aritmética, NullPointerException, exceção de divisão por zero e muitas outras. Java São condições que muitas vezes estão fora do controle direto de um desenvolvedor.
Clique aqui. se o vídeo não estiver acessível
Por que precisamos de tratamento de exceções?
Suponha que você tenha programado um programa para acessar um servidor. Tudo funciona bem durante o desenvolvimento.ping o código em um ambiente local com condições controladas.
Durante uma execução real em produção, o servidor pode estar inativo. Quando seu programa tenta acessá-lo, uma exceção é lançada e, sem o tratamento adequado, o programa será encerrado abruptamente.
Como lidar com uma exceção em Java
Até agora, vimos que uma exceção geralmente está além do controle do desenvolvedor. No entanto, atribuir a falha do código a problemas ambientais não é uma solução real. Você precisa de uma programação robusta que lide com situações excepcionais. Esse tipo de código é conhecido como código de segurança. Manipulador de Exceções.
Em nosso exemplo, um bom tratamento de exceções significaria que, quando o servidor principal estivesse inativo, o programa se conectaria automaticamente a um servidor de backup.
Para implementar isso, você poderia escrever um código para se conectar ao servidor usando as tradicionais condições `if` e `else`. Você verificaria se o servidor está inativo e, em caso afirmativo, escreveria um código para se conectar ao servidor de backup. Essa organização de código usando ramificações "if" e "else" não é eficaz quando seu código possui múltiplas conexões. Java exceções lidar.
class connect{ if(Server Up){ // code to connect to server } else{ // code to connect to BACKUP server } }
Tente pegar o bloco em Java
Java Oferece um mecanismo integrado de tratamento de exceções que separa a lógica normal da lógica de recuperação de erros.
- O código normal entra em um EXPERIMENTE 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 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 será lançada e o código no bloco CATCH será executado.
Então, é assim que uma exceção é tratada em Java.
Sintaxe para usar try e catch
try{ statement(s) } catch (exceptiontype name){ statement(s) }
Exemplo de bloco try-catch
Passo 1) Copie o código a seguir 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"); } }
Passo 2) Salve o arquivo e compile o código. Execute o programa usando o comando `java`. JavaExceção.
Passo 3) Uma exceção aritmética, divisão por zero, é exibida na linha 5, e a linha 6 nunca é executada.
Passo 4) Agora vamos examinar como o bloco try/catch nos ajudará a lidar com essa exceção. Colocaremos a linha de código que causou a exceção dentro de um bloco catch. tentar bloco, seguido de um captura bloquear. 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"); } }
Passo 5) Salve, compile e execute o código. Você obterá a seguinte saída.
Como você pode observar, a exceção é tratada e a última linha de código também é executada. Observe também 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 ArithmeticException “e” contém informações sobre a exceção ocorrida, o que pode ser útil ao tomar medidas de recuperação.
Java Hierarquia de classes de exceção
Após a execução de uma instrução `catch`, as demais são ignoradas e a execução continua após o bloco `try` e `catch`. Blocos `catch` aninhados devem seguir a hierarquia de exceções, da subclasse mais específica para a classe pai mais geral.
- Todas as classes de exceção em Java Estenda a classe Throwable. Throwable possui duas subclasses, Error e Exception.
- A classe Error define as exceções ou problemas que não são esperados em circunstâncias normais no seu programa, por exemplo, erro de memória, erro de hardware ou erro da JVM.
- A classe Exception representa as exceções que podem ser tratadas pelo seu programa, e seu programa pode se recuperar dessas exceções usando blocos try e catch.
- Uma RuntimeException é uma subclasse da classe Exception. Exceções desse tipo representam exceções não verificadas que ocorrem em tempo de execução e não podem ser detectadas em tempo de compilação. Bons exemplos incluem exceção de divisão por zero e exceção de ponteiro nulo.
- A exceção IOException é gerada durante operações de entrada e saída.
- Exceção interrompida em Java é gerado durante operações multithread quando uma thread é interrompida.
Exemplo: Aninhamento de blocos try e catch
Passo 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"); } }
Passo 2) Salve o arquivo e compile o código. Execute o programa usando o comando, Java JavaExceção.
Passo 3) Uma exceção ArrayIndexOutOfBoundsException foi gerada. Altere o valor de int d para 0. Salve, compile e execute o código.
Passo 4) Uma exceção ArithmeticException deve ser gerada.
Passo 5) Remova o comentário das linhas 10 a 12. Salve, compile e execute o código.
Etapa 6) Erro de compilação? Isso ocorre porque `Exception` é a classe base de `ArithmeticException`. Qualquer exceção lançada 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 bloquear
O último bloco é executado independentemente de uma exceção ser levantada no bloco try. Isso é opcional Para usar com um bloco try. O bloco finally é o local correto para liberar recursos como conexões de banco de dados, arquivos ou sockets de rede.
try { statement(s) } catch (ExceptiontType name) { statement(s) } finally { statement(s) }
Se uma exceção for lançada no bloco try, o bloco finally será executado após a conclusão do bloco catch.
Exemplo de bloco finally
Passo 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"); } } }
Passo 2) Salve, compile e execute o código.
Passo 3) Resultado esperado: O bloco `finally` é executado mesmo que uma exceção seja lançada.
Passo 4) Altere o valor da variável d = 1. Salve, compile e execute o código e observe a saída.
Melhores Práticas para Java Manipulação de exceção
Seguir algumas regras comprovadas ajudará você a manter seu Java Código resiliente, legível e fácil de depurar:
- Capture primeiro a exceção mais específica e, em seguida, as mais gerais, para preservar a integridade da hierarquia de exceções.
- Evite blocos `catch` vazios. No mínimo, registre a exceção para que a causa raiz nunca seja perdida.
- Utilize o bloco `finally` ou `try` com recursos para liberar arquivos, sockets e conexões de banco de dados.
- Lance exceções verificadas somente quando o chamador puder se recuperar de forma razoável e use exceções não verificadas para erros de programação.
- Encapsule exceções de baixo nível em uma exceção de negócio significativa para manter a consistência da API.tracEstá limpo.
- Em código multithread, nunca ignore silenciosamente a exceção InterruptedException; em vez disso, restaure o sinalizador de interrupção.







