Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Criar uma exception customizada sem herança
  2. Adicionar atributos e métodos
  3. Exception customizada e throws

Para criarmos nossa própria exceção, precisamos declarar uma classe que irá herdar a classe Exception ou outra classe de exceção desejada como ArithmeticExection, ArrayIndexOutOfBoundException.

Sintaxe 1
modificador_acesso class minha_excecao extends excecao_base
{
   //corpo
}

No construtor de nossa exceção customizada, utilizamos um parâmetro para receber uma mensagem de erro customizada e chamadoss construtor da classe herdada super.

Sintaxe 2
modidficador_acesso class nome_excecao extends excecao_base
{
    public nome_excecao(String mensagem_erro)
    {
        super(mensagem_erro);
    }
}

Chamando o construtor da classe que herdamos, podemos utilizar os métodos getMessage, toString e outros.

Exemplo 1
//MinhaException.java
public class MinhaException extends Exception{
    
    public MinhaException(String mgs){
        super(msg);
    }
}
//Main.java
public class Main
{
	public static void main(String[] args){
        try{
           throw new MinhaException("MinhaException");
        }
        catch( MinhaException e ){
            e.getMessage();
        }
	}
}
Saída
MinhaException

As exceções customizadas aceitam métodos e atributos assim como qualquer outra classe que criamos até agora. Tudo estudado sobre atributos, métodos e outros é aplicável.

Exemplo 2
//MinhaException.java
public class MinhaException extends Exception{
    private int codigo = -1;

    public int getCodigoErro(){
        return codigo;
    }
    public MinhaException(int cod, String msg){
        super(msg);
        codigo = cod;
    }
}
//Main.java
public class Main
{
	public static void main(String[] args) {
        try {
           throw new MinhaException(999,"Mensagem customizada");
        }
        catch( MinhaException e ){
            System.out.println(e.getCodigoErro());
            System.out.println(e.getMessage());
        }
	}
}
Saída
999
Mensagem customizada

Da mesma forma que podemos declarar um método que pode lançar alguma das exceções nativas, o mesmo pode ser feito com exceções customizadas usando o throws como já visto.

Exemplo 3
//MinhaException.java
public class MinhaException extends Exception{
    private int codigo = -1;

    public int getCodigoErro(){
        return codigo;
    }
    public MinhaException(int cod, string s){
        super(s);
        codigo = cod;
    }
}
//Main.java
public class Main
{
    public static void metodo() throws MinhaException
    {
        throw new MinhaException(999,"Mensagem de erro"); 
    }
	public static void main(String[] args) {

        try{
           metodo();
        }
        catch( MinhaException e ){
            System.out.println(e.getMessageCustom());
        }
	}
}
Saída
Mensagem de erro
  1. 24/09/2024 - revisão 2 - Correções em descrição de tópicos; outros ajustes
  2. 08/02/2024 - revisão 1 - correção em navegação e erros gramaticais
  3. 04/09/2023 - versão inicial