logo

Tipos de exceção em Java

Em Java, exceção é um evento que ocorre durante a execução de um programa e interrompe o fluxo normal das instruções do programa. Bugs ou erros que não queremos e que restringem a execução normal do código do nosso programa são chamados de exceções . Nesta seção, nos concentraremos no tipos de exceções em Java e as diferenças entre os dois.

As exceções podem ser categorizadas de duas maneiras:

  1. Exceções integradas
    • Exceção verificada
    • Exceção não verificada
  2. Exceções definidas pelo usuário
Tipos de exceção em Java

Exceção integrada

Exceções que já estão disponíveis em Bibliotecas Java são referidos como exceção integrada . Essas exceções são capazes de definir a situação do erro para que possamos entender o motivo da ocorrência desse erro. Pode ser categorizado em duas grandes categorias, ou seja, exceções verificadas e exceção não verificada .

Exceção verificada

Verificado exceções são chamadas tempo de compilação exceções porque essas exceções são verificadas em tempo de compilação pelo compilador. O compilador garante se o programador trata a exceção ou não. O programador deveria ter que lidar com a exceção; caso contrário, o sistema apresentou um erro de compilação.

CheckedExceptionExample.java

 import java.io.*; class CheckedExceptionExample { public static void main(String args[]) { FileInputStream file_data = null; file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/Hello.txt'); int m; while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); } } 

No código acima, estamos tentando ler o Olá.txt arquivo e exibir seus dados ou conteúdo na tela. O programa lança as seguintes exceções:

  1. O FileInputStream (nome do arquivo) construtor lança o FileNotFoundException essa é a exceção verificada.
  2. O ler() método do FileInputStream classe lança o IOException .
  3. O fechar() método também lança o IOException.

Saída:

excel remover o primeiro caractere
Tipos de exceção em Java

Como resolver o erro?

Existem basicamente duas maneiras pelas quais podemos resolver esses erros.

1) As exceções ocorrem no método principal. Podemos nos livrar desses erros de compilação declarando a exceção no método principal usando os lances Declaramos apenas IOException, não FileNotFoundException, por causa do relacionamento filho-pai. A classe IOException é a classe pai de FileNotFoundException, portanto esta exceção será automaticamente coberta por IOException. Declararemos a exceção da seguinte maneira:

 class Exception{ public static void main(String args[]) throws IOException { ... ... } 

Se compilarmos e executarmos o código, os erros desaparecerão e veremos os dados do arquivo.

Tipos de exceção em Java

2) Também podemos lidar com essas exceções usando tentar pegar No entanto, a forma que usamos acima não está correta. Temos que fornecer uma mensagem significativa para cada tipo de exceção. Fazendo isso seria fácil entender o erro. Usaremos o bloco try-catch da seguinte maneira:

Exceção.java

 import java.io.*; class Exception{ public static void main(String args[]) { FileInputStream file_data = null; try{ file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/programs/Hell.txt'); }catch(FileNotFoundException fnfe){ System.out.println('File Not Found!'); } int m; try{ while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); }catch(IOException ioe){ System.out.println('I/O error occurred: '+ioe); } } } 

Veremos uma mensagem de erro adequada 'Arquivo não encontrado!' no console porque não existe tal arquivo nesse local.

Tipos de exceção em Java

Exceções não verificadas

O desmarcado exceções são exatamente o oposto do verificado exceções. O compilador não verificará essas exceções em tempo de compilação. Em palavras simples, se um programa lançar uma exceção não verificada, e mesmo que não a tratemos ou declaremos, o programa não apresentará um erro de compilação. Geralmente ocorre quando o usuário fornece dados incorretos durante a interação com o programa.

python imprime com 2 casas decimais

Nota: A classe RuntimeException é capaz de resolver todas as exceções não verificadas devido ao relacionamento filho-pai.

UncheckedExceptionExample1.java

 class UncheckedExceptionExample1 { public static void main(String args[]) { int postive = 35; int zero = 0; int result = positive/zero; //Give Unchecked Exception here. System.out.println(result); } } 

No programa acima, dividimos 35 por 0. O código seria compilado com sucesso, mas geraria um erro ArithmeticException em tempo de execução. Ao dividir um número por 0 lança a exceção de divisão por zero que é uma exceção desmarcada.

Saída:

Tipos de exceção em Java

UncheckedException1.java

 class UncheckedException1 { public static void main(String args[]) { int num[] ={10,20,30,40,50,60}; System.out.println(num[7]); } } 

Saída:

Tipos de exceção em Java

No código acima, estamos tentando localizar o elemento na posição 7, mas o comprimento do array é 6. O código é compilado com sucesso, mas lança ArrayIndexOutOfBoundsException em tempo de execução.

string.replaceall java

Exceção definida pelo usuário

Em Java , já temos algumas classes de exceção integradas como ArrayIndexOutOfBoundsException , NullPointerException , e Exceção Aritmética . Essas exceções são restritas para serem acionadas em algumas condições predefinidas. Em Java, podemos escrever nossa própria classe de exceção estendendo a classe Exception. Podemos lançar nossa própria exceção em uma condição específica usando a palavra-chave throw. Para criar uma exceção definida pelo usuário, devemos ter conhecimento básico de o tentar pegar bloquear e lançar palavra-chave .

Vamos escrever um Programa Java e crie uma exceção definida pelo usuário.

UserDefinedException.java

 import java.util.*; class UserDefinedException{ public static void main(String args[]){ try{ throw new NewException(5); } catch(NewException ex){ System.out.println(ex) ; } } } class NewException extends Exception{ int x; NewException(int y) { x=y; } public String toString(){ return ('Exception value = '+x) ; } } 

Saída:

Tipos de exceção em Java

Descrição:

No código acima, criamos duas classes, ou seja, UserDefinedException e Nova Exceção . O UserDefinedException tem nosso método principal, e o Nova Exceção class é nossa classe de exceção definida pelo usuário, que estende exceção . No Nova Exceção classe, criamos uma variável x do tipo inteiro e atribua um valor a ele no construtor. Após atribuir um valor a essa variável, retornamos a mensagem de exceção.

No UserDefinedException classe, adicionamos um tentar pegar bloquear. Na seção try, lançamos a exceção, ou seja, Nova Exceção e passe um número inteiro para ele. O valor será passado para a classe NewException e retornará uma mensagem. Capturamos essa mensagem no bloco catch e a mostramos na tela.

bin para bcd

Diferença entre exceção verificada e não verificada

Sim não Exceção verificada Exceção não verificada
1. Essas exceções são verificadas em tempo de compilação. Essas exceções também são tratadas em tempo de compilação. Essas exceções são exatamente o oposto das exceções verificadas. Essas exceções não são verificadas e tratadas em tempo de compilação.
2. Essas exceções são subclasses diretas de exceção, mas não estendidas da classe RuntimeException. Elas são as subclasses diretas da classe RuntimeException.
3. O código apresenta um erro de compilação no caso em que um método lança uma exceção verificada. O compilador não é capaz de tratar a exceção sozinho. O código compila sem nenhum erro porque as exceções escapam ao aviso do compilador. Essas exceções são resultados de erros criados pelo usuário na lógica de programação.
4. Essas exceções ocorrem principalmente quando a probabilidade de falha é muito alta. Essas exceções ocorrem principalmente devido a erros de programação.
5. Exceções verificadas comuns incluem IOException, DataAccessException, InterruptedException, etc. Exceções não verificadas comuns incluem ArithmeticException, InvalidClassException, NullPointerException, etc.
6. Essas exceções são propagadas usando a palavra-chave throws. Eles são propagados automaticamente.
7. É necessário fornecer o bloco try-catch e try-finally para tratar a exceção verificada. No caso de exceção não verificada não é obrigatório.

Bugs ou erros que não queremos e que restringem a execução normal dos programas são chamados de exceções .

ArithmeticException, ArrayIndexOutOfBoundExceptions, ClassNotFoundExceptions etc. estão na categoria de Exceção integrada . Às vezes, as exceções integradas não são suficientes para explicar ou descrever certas situações. Para descrever essas situações, temos que criar nossas próprias exceções criando uma classe de exceção como uma subclasse da Exceção aula. Esses tipos de exceções entram na categoria de Exceção definida pelo usuário .