"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ção | Exceção verificada | Exceção não verificada |
---|---|---|
Basic | O compilador verifica a exceção verificada. | O compilador não verifica a exceção não verificada. |
Classe de Exceção | Exceto "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ção | Se 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ção | O 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
- Exceções verificadas estão no conhecimento do compilador enquanto, exceções não verificadas não estão no conhecimento do compilador.
- 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.
- 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á.
- 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.