Diferença Entre Exceção Excluída e Exceção Executada

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 do nome vem do "evento excepcional". Lançar uma exceção é o processo de criação de um objeto de exceção e liberá-lo para o sistema de tempo de execução. Quando o sistema de tempo de execução recebe o objeto de exceção, ele tentará encontrar alguém para lidar com ele dentro da pilha de chamadas, atravessando-o na ordem inversa (em que os métodos foram chamados). O sistema de tempo de execução é bem-sucedido se encontrar um método com um manipulador de exceção. O manipulador de exceção é um bloco de código que pode lidar oficialmente com 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, exceções herdam da classe Throwable. Exceções verificadas são exceções em que o compilador é executado. 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?

Exceções verificadas são objetos da classe java. lang. exceção ou suas subclasses (exceto o 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 no compilador). Por esse motivo, muitas exceções verificadas são muito conhecidas pelos programadores. Por exemplo, o IOException e suas sub-classes são exceções verificadas, e sempre que o programador está lidando com o acesso ou modificação de um arquivo, o compilador verifica se todas as possíveis IOExcepções são atendidas pelo programador.

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

Runtime Exceptions consistem em java. lang. RuntimeException e todas as suas sub-classes. Teoricamente falando, eles servem o mesmo propósito que as exceções verificadas, e podem ser jogados ou manipulados como exceção verificada, mas a manipulação deles não é aplicada pelo compilador. Portanto, as exceções de tempo de execução pertencem à família de exceções não controladas. 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 são ocorrências indesejadas durante a execução de um programa, elas têm suas diferenças. O controle de exceção verificado é executado pelo compilador, mas as exceções de tempo de execução não são.Portanto, as exceções verificadas devem ser jogadas ou manipuladas para que o código compile, mas não existe tal requisito relativo às exceções de tempo de execução. Consequentemente, as exceções de tempo de execução pertencem a categorias de exceções não verificadas, juntamente com erros.

Desvantagem com exceções verificadas é que o programador tem que lidar com isso mesmo se ela não sabe como. Então, se o programador apenas lança uma nova exceção sem conter o original, o rastreamento da pilha pertencente à exceção original será perdido. Aqui é onde as exceções de tempo de execução são úteis. Como todas as exceções de tempo de execução podem ser manipuladas em um único local, os programadores podem gravar menos quantidade de código. Por outro lado, uma vez que as exceções verificadas devem ser capturadas, não há surpresa para o programador. Ela sempre saberá qual exceção verificada pode ser jogada por um determinado método. Contrariamente a isso, várias exceções de tempo de execução podem ser lançadas sem o conhecimento do programador.