Recomendado, 2024

Escolha Do Editor

Diferença entre exceções verificadas e não verificadas em Java

"Throwable" é a classe pai das classes Error e Exception. A classe "RuntimeException" e suas subclasses, a classe "Error" e suas classes filhas são as "exceções não verificadas", enquanto as demais subclasses da classe "Exception" exceto "RuntimeException" são as exceções verificadas. A diferença básica entre a exceção marcada e não-verificada é que as exceções verificadas são verificadas pelo compilador, enquanto o compilador não verifica as exceções não verificadas .

Vamos discutir as outras diferenças entre exceções marcadas e não verificadas com a ajuda do gráfico de comparação.

Gráfico de comparação

Base para ComparaçãoExceção verificadaExceção não verificada
BasicO compilador verifica a exceção verificada.O compilador não verifica a exceção não verificada.
Classe de ExceçãoExceto "RuntimeException" class todas as classes filho da classe "Exception", e a classe "Error" e suas classes filho são Exceção verificada.A classe "RuntimeException" e suas classes filhas são "Exceções não verificadas".
ManipulaçãoSe não tratarmos a exceção verificada, os objetos do compilador.Mesmo se não lidarmos com a exceção não verificada, o compilador não objetará.
CompilaçãoO programa não compila se houver uma exceção verificada não tratada no código do programa.O programa compila com sucesso mesmo se houver uma exceção não controlada não tratada no código do programa.

Definição de Exceção Verificada

As exceções verificadas são aquelas exceções que são verificadas pelo compilador para a execução suave do programa. O compilador verifica se o programa pode manipular a exceção marcada ou não. Se o código não puder manipular a exceção, ocorrerá um erro de compilação. Todas as subclasses da classe “Exception”, exceto a classe RuntimeException, são as exceções verificadas.
Vamos estudar a exceção verificada com um exemplo.

 import java.io. *; class Exemplo {public static void main (args de seqüência de caracteres []) {FileInputStream fis = null; fis = new FileInputStream ("B: / meuarquivo.txt"); // Esse construtor FileInputStream (File filename) lança FileNotFoundException, que é uma exceção verificada. int k; while ((k = fis.read ())! = -1) {// O método read () da classe FileInputStream também lança uma exceção verificada: IOException. System.out.print ((char) k); } fis.close (); // O método close () fecha o fluxo de entrada do arquivo e lança IOException. }} 

No código acima, estamos tentando abrir, ler e exibir o conteúdo do arquivo. Pode acontecer que o arquivo não esteja presente, então ocorrerá FileNotFoundException, que é uma exceção verificada. Se a exceção marcada não for manipulada, o compilador não permitirá que o programa seja compilado sem problemas. Ele mostrará o erro de tempo de compilação. Portanto, para uma compilação suave, a exceção verificada deve ser capturada ou declarada para ser lançada.

Definição de exceção não verificada

Exceções não verificadas são aquelas exceções que não são verificadas pelo compilador. O compilador compila o programa com êxito, mesmo que as exceções não sejam tratadas pelo código. A classe "Error" e suas classes filhas, a classe "Runtime" e suas subclasses são as exceções não verificadas.

Vamos ver um exemplo de uma exceção não verificada.

 class Exemplo {public static void main (args de seqüência []) {int arr [] = {1, 2, 3, 4, 5}; System.out.println (arr [7]); //Índice de matriz fora dos limites de exceção. }} 

No código acima, você pode ver que há um ArrayIndexOutOfBoundsException, como eu estou tentando acessar o elemento que não existe. Como esta é uma exceção não verificada, o erro de tempo de compilação não ocorrerá e o arquivo será compilado sem qualquer erro. Mas o programa não será executado até que a exceção seja tratada. Portanto, para uma execução tranquila, as exceções devem ser capturadas ou declaradas para serem lançadas

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

  1. Exceções verificadas estão no conhecimento do compilador enquanto, exceções não verificadas não estão no conhecimento do compilador.
  2. Exceto RuntimeException e Error class todas as classes são verificadas exceção. Por outro lado, as classes RuntimeException e Error são exceções não verificadas.
  3. Se as exceções verificadas não forem manipuladas pelo código, os objetos do compilador. Por outro lado, se não tratarmos exceções não verificadas no código, o compilador não objetará.
  4. Se exceções marcadas ocorrerem no código, o código não será compilado, enquanto, mesmo se exceções não verificadas não forem manipuladas pelo código, o compilador ainda compilará o código.

Nota :

Exceção verificada ou desmarcada ocorre obrigatoriamente durante o tempo de execução. Eles só são marcados ou desmarcados pelo compilador durante o tempo de compilação.

Conclusão:

Ambas as exceções verificadas e não verificadas devem ser tratadas para executar o programa sem problemas.

Top