Exceção verificada vs não verificada: diferença e comparação

A verificação de exceções é uma das coisas mais importantes na programação e no teste de software. Exceção verificada e não verificada impede a execução do programa quando está tentando detectar um bug ou erro.

Além disso, considera-se que é responsabilidade do programador garantir que esses erros nunca aconteçam. As exceções verificadas e não verificadas são excepcionalmente semelhantes, mas são diferentes.

Principais lições

  1. O compilador verifica as exceções verificadas durante o tempo de compilação e precisa ser tratado pelo programador usando o bloco try-catch ou a palavra-chave throws, enquanto as exceções não verificadas ocorrem em tempo de execução e não precisam ser tratadas.
  2. As exceções verificadas são usadas para erros recuperáveis, como arquivo não encontrado, enquanto as exceções não verificadas são usadas para erros irrecuperáveis, como falta de memória ou exceções de ponteiro nulo.
  3. As exceções verificadas fazem parte da assinatura do método, enquanto as exceções não verificadas não.

Exceção Verificada x Não Verificada

A diferença entre as exceções verificadas e não verificadas é que as exceções verificadas são aquelas que devem ser capturadas e tratadas pela instrução checks () ou farão com que um programa seja encerrado e imprima um rastreamento de pilha, enquanto as exceções não verificadas, por outro lado, devem não precisa ser capturado ou manuseado, pois é o programadorÉ responsabilidade do s certificar-se de que esses erros nunca aconteçam.

Marcado vs Desmarcado

A exceção Checked é um tipo específico de exceção que impede a execução do programa até que seja capturado por um bloco catch ou especificado na cláusula throws de um método, além disso, a exceção Checked é capturada e tratada pela instrução checks () ou eles farão com que um programa termine e imprima um rastreamento de pilha.

Se o código que causou a exceção não foi testado corretamente, pode causar erros excepcionais estranhos não verificados que podem ser difíceis de encontrar e corrigir.

Além disso, exceções não verificadas não precisam ser capturadas ou tratadas, pois é responsabilidade do programador garantir que esses erros nunca aconteçam.

Tabela de comparação

Parâmetros de comparaçãoExceção verificadaExceção não verificada
DefiniçãoAs exceções verificadas são aquelas que devem ser capturadas e tratadas pelas instruções checks().Exceções não verificadas não precisam ser capturadas ou tratadas.
OcorrênciaUm bloco catch deve lidar com exceções verificadas durante o tempo de compilação. Exceções não detectadas, também conhecidas como exceções de tempo de execução, são exceções não verificadas.
Tratamento de errosUma exceção verificada interrompe a execução do programa até que esteja tentando detectar um bug ou erro. É responsabilidade do programador garantir que esses erros nunca aconteçam.
Classes de exceçãoTem aulas excepcionais.Não possui classes excepcionais, ou não é parte importante de classes excepcionais.
ExemploOutOfMemoryError, NullPointerException e StackOverflowError.IndexOutOfBoundsException

O que é Exceção Verificada?

As exceções verificadas estão intimamente relacionadas ao teste de software; além disso, uma exceção verificada é uma exceção que deve ser tratada ou o programa será encerrado.

Leia também:  Pinterest vs StumbleUpon: diferença e comparação

Isso significa que o código após uma instrução throw não será executado se nenhum bloco catch manipular a exceção.

As exceções verificadas servem a dois propósitos: elas impedem que o programa continue quando ocorre um erro e fornecem informações de depuração sobre onde encontrar esse erro.

O compilador não força o programador a lidar com a exceção, mas qualquer classe que estenda outra classe também deve estender ou implementar todas as suas exceções verificadas.

Caso contrário, uma compilação da classe de extensão falha com um erro de tempo de compilação informando que ela deve manipular todas as exceções verificadas pela superclasse. Isso evita que a herança seja usada para contornar erros internos falha modos.

Quando uma exceção é lançada, ela é passada para o depurador em Eclipse ou para o sistema operacional, que encerra o programa normalmente. O sistema operacional imprime um rastreamento de pilha.

Um rastreamento de pilha fornece informações para cada chamada de método na ordem em que foram chamadas. Isso permite que o programador descubra onde ocorreu uma exceção no código ou no fluxo de execução do código.

O que é uma exceção não verificada?

Exceções não verificadas existem para permitir que os programadores programem de forma mais flexível e eficiente. Java foi projetado para permitir que os programadores criem aplicativos que usam recursos de forma eficiente e evitam a aparência de impasse.

Exceções não verificadas podem ser eliminadas por práticas cuidadosas de design e codificação. No entanto, todas as exceções, exceto NullPointerException no código Java, são consideradas desmarcadas.

Exceções não verificadas não precisam ser capturadas ou tratadas.

Além disso, eles são uma maneira de o código de nível superior informar ao código de nível inferior que fará algo que não é thread-safe, mas que não causará problemas se houver apenas um thread em execução em um determinado momento, como atualizar alguns dados ou renderizar alguns gráficos na tela.

Leia também:  Som Surround 5.1 vs 7.2: Diferença e Comparação

Usar exceções não verificadas é uma proposta arriscada. Se uma classe lançar uma exceção não verificada, quem quer que use essa classe precisa estar ciente disso e ter alguns métodos rigorosos para lidar com isso.

Por exemplo, um programador pode querer ler alguns dados de um arquivo e depois escrevê-los novamente, e esse tipo de funcionalidade não precisa de nenhuma sincronização.

É perfeitamente aceitável que um aplicativo leia os mesmos dados duas vezes em dois threads diferentes sem ter nenhum efeito negativo no desempenho ou na estabilidade do sistema.

Principais diferenças entre exceções verificadas e não verificadas

  1. As exceções verificadas são aquelas que devem ser capturadas e tratadas pelas instruções checks (), enquanto as exceções não verificadas não precisam ser capturadas ou tratadas.
  2. As exceções verificadas devem ser tratadas por um bloco catch durante o tempo de compilação, enquanto as exceções não capturadas, também conhecidas como exceções de tempo de execução, são exceções não verificadas.
  3. A exceção marcada impede a execução do programa até que ele esteja tentando detectar um bug ou erro, enquanto as exceções não verificadas são de responsabilidade do programador para garantir que esses erros nunca aconteçam.
  4. A exceção verificada possui classes excepcionais, enquanto as exceções não verificadas não possuem classes excepcionais ou não são uma parte importante das classes excepcionais.
  5. Um exemplo de Exceção verificada seria um OutOfMemoryError, NullPointerException e StackOverflowError, enquanto um exemplo de Exceção não verificada seria um IndexOutOfBoundsException.

Referências

  1. https://ieeexplore.ieee.org/abstract/document/4343929/
  2. https://link.springer.com/article/10.1023/A:1010020917337

Última atualização: 11 de junho de 2023

dot 1
Um pedido?

Eu me esforcei tanto para escrever esta postagem no blog para fornecer valor a você. Será muito útil para mim, se você considerar compartilhá-lo nas mídias sociais ou com seus amigos/família. COMPARTILHAR É ♥️

8 reflexões sobre “Exceção verificada versus não verificada: diferença e comparação”

  1. A cobertura abrangente dos conceitos de exceção verificada e não verificada, juntamente com suas aplicações, proporciona uma compreensão abrangente. O artigo aborda eficazmente os aspectos fundamentais destas exceções na programação.

    Resposta
  2. A explicação do artigo de que as exceções verificadas são erros recuperáveis, como arquivo não encontrado, e as exceções não verificadas são erros irrecuperáveis, como falta de memória, é relevante e ressalta a importância de distinguir entre os dois.

    Resposta
  3. O artigo fornece informações detalhadas sobre exceções verificadas e não verificadas, deixando claro como elas diferem e quais funções desempenham. Também explica como o compilador trata as exceções verificadas durante o tempo de compilação e a responsabilidade do programador no tratamento das exceções não verificadas.

    Resposta
  4. A discussão sobre exceções verificadas que exigem um bloco try-catch ou uma palavra-chave throws enquanto exceções não verificadas ocorrem em tempo de execução e não precisam ser tratadas é esclarecedora. Destaca os cenários potenciais para a ocorrência de cada tipo de exceção.

    Resposta
  5. A explicação detalhada de que as exceções verificadas fazem parte da assinatura de um método, enquanto as exceções não verificadas não o fazem, fornece informações valiosas sobre a natureza dessas exceções. O artigo comunica efetivamente a distinção entre os dois.

    Resposta
  6. O artigo oferece uma análise completa das exceções verificadas e não verificadas, destacando sua importância e implicações para a execução do programa. A descrição clara ajuda a compreender suas funções no desenvolvimento e teste de software.

    Resposta
  7. O artigo apresenta uma tabela de comparação abrangente que descreve sucintamente as diferenças entre exceções verificadas e não verificadas. A tabela simplifica a compreensão dos dois tipos de exceções, suas ocorrências e como são tratadas.

    Resposta
  8. As informações detalhadas sobre exceções verificadas e não verificadas, incluindo definição, ocorrência e tratamento de erros, servem como um recurso valioso para aqueles que buscam aprofundar seu conhecimento sobre testes de software e princípios de programação.

    Resposta

Deixe um comentário

Quer salvar este artigo para mais tarde? Clique no coração no canto inferior direito para salvar em sua própria caixa de artigos!