Diferença Entre Exceção Verificada E Exceção De Tempo De Execução

Diferença Entre Exceção Verificada E Exceção De Tempo De Execução
Diferença Entre Exceção Verificada E Exceção De Tempo De Execução

Vídeo: Diferença Entre Exceção Verificada E Exceção De Tempo De Execução

Vídeo: Diferença Entre Exceção Verificada E Exceção De Tempo De Execução
Vídeo: Tratamento de Exceção - Exceções do tipo Runtime e Checked 2024, Abril
Anonim

Exceção verificada vs exceção de tempo de execução

As exceções são tipos especiais de eventos, que podem perturbar o fluxo normal do programa. A exceção de nome vem de “evento excepcional”. Lançar uma exceção é o processo de criar um objeto de exceção e transferi-lo para o sistema de tempo de execução. Quando o sistema de execução recebe o objeto de exceção, ele tentará encontrar alguém para tratá-lo dentro da pilha de chamadas, percorrendo-o na ordem reversa (na qual os métodos foram chamados). O sistema de execução é bem-sucedido se encontrar um método com um manipulador de exceção. O manipulador de exceções é um bloco de código que pode manipular oficialmente a referida exceção. Se o sistema de tempo de execução encontrar um manipulador apropriado, ele passará o objeto de exceção para o manipulador. Isso é chamado de captura da exceção. No entanto, se a exceção não puder ser tratada, o programa será encerrado. Em Java,as exceções herdam da classe Throwable. As exceções verificadas são exceções nas quais o tratamento é imposto pelo compilador. As exceções de tempo de execução são um tipo de exceções que não são verificadas pelo compilador.

O que é uma exceção verificada?

As exceções verificadas são objetos da classe java.lang.exception ou suas subclasses (exceto java.lang. RuntimeException e suas subclasses). As exceções verificadas são “verificadas” em tempo de compilação. Isso significa que o programador deve capturar ou lançar essas exceções, ou então a compilação reclamaria (causando um erro do compilador). Por esse motivo, muitas exceções verificadas são bem conhecidas dos programadores. Por exemplo, a IOException e suas subclasses são exceções verificadas e, sempre que o programador está lidando com o acesso ou modificação de um arquivo, o compilador verifica para ter certeza de que todas as IOExceptions possíveis foram atendidas pelo programador.

O que é uma exceção de tempo de execução?

As exceções de tempo de execução consistem em java.lang. RuntimeException e todas as suas subclasses. Teoricamente falando, eles servem ao mesmo propósito das exceções verificadas e podem ser lançados ou tratados como exceção verificada, mas o tratamento deles não é imposto pelo compilador. Portanto, as exceções de tempo de execução pertencem à família de exceções não verificadas. NullPointerException, NumberFormatEception, ClassCastException e ArrayIndexOutOfBoundsException são exceções de tempo de execução comuns em Java.

Qual é a diferença entre Checked Exception e Runtime Exception?

Embora as exceções verificadas e as exceções de tempo de execução sejam ocorrências indesejadas durante a execução de um programa, elas têm suas diferenças. A manipulação de exceção verificada é aplicada pelo compilador, mas as exceções de tempo de execução não. Portanto, as exceções verificadas devem ser lançadas ou tratadas para que o código seja compilado, mas não há tal requisito em relação às exceções de tempo de execução. Conseqüentemente, as exceções de tempo de execução pertencem à categoria de exceções não verificadas junto com os erros.

A desvantagem das exceções verificadas é que o programador tem que lidar com isso mesmo que não saiba como. Portanto, se o programador apenas lançar uma nova exceção sem envolver o original, o rastreamento de pilha pertencente à exceção original será perdido. É aqui que as exceções de tempo de execução são úteis. Como todas as exceções de tempo de execução podem ser tratadas em um único lugar, os programadores podem escrever menos quantidade de código. Por outro lado, como as exceções verificadas devem ser capturadas, não há surpresa para o programador. Ela sempre saberá qual exceção verificada pode ser lançada por um determinado método. Ao contrário disso, várias exceções de tempo de execução podem ser lançadas sem o conhecimento do programador.

Recomendado: