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

  1. Criar uma exception customizada
  2. Adicionar atributos e métodos
  3. Lançando e Relançando
  4. Boas práticas

Para criarmos nossas próprias exceções, precisamos primeiro declarar uma classe que herda da classe Exception ou alguma outra classe de exceção desejada como ArithmeticException, por exemplo.

Sintaxe
modificador_acesso class minha_excecao : excecao_base
{
   //corpo
}

No construtor de nossa exceção customizada, utilizamos um parâmetro para receber uma mensagem informativa do erro customizado e invocamos construtor da classe herdada base.

Sintaxe
modificador_acesso class nome_excecao : excecao_base
{
    public nome_excecao(string mensagem_erro): base(mensagem_erro)
    {
        //iniciar nome_excecao
    }
}

Após iniciar nossa própria exception e também a classe base podemos utilizar as métodos Message, StackTrace e outros herdados de Exception.

Exemplo 1
public class MinhaException : Exception
{
    public MinhaException(String msg): base(msg) 
    {
        //omitido
    }
}
Saída
-

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

Exemplo 2
public class MinhaException: Exception
{
    private int codigo = -1; //atributo custom

    public int GetCodigoErro() //método custom
    {
        return this.codigo;
    }
    public MinhaException(int cod, String msg): base(msg)
    {
        this.codigo = cod;
    }
}

Como pode ser observado no exemplo acima, adicionamos um atributo extra, codigo, para armazenar algum código extra referente ao nossa execption e um método GetCodigoErro que retorna esse código.

Saída
-

Não há diferença ao lançar ou relançar um exception customiza, exceto pelos atributos extras adicionados. O uso do comando throw é feito como já visto em outros exemplos.

Exemplo 3
public class MinhaException: Exception{
    private int codigo = -1;

    public int GetCodigoErro(){
        return this.codigo;
    }
    public MinhaException(int cod, String msg): base(msg)
    {
        this.codigo = cod;
    }
}
public class Program
{
	public static void Main(string[] args) {

        try 
        {
           throw new MinhaException(999,"Mensagem customizada");
        }
        catch( MinhaException e )
        {
            Console.WriteLine(e.GetCodigoErro());
            Console.WriteLine(e.Message);
        }
	}
}
Saída
999
Mensagem customizada
  1. 13/08/2025 - revisão 2 - Ajustes: pontuais, sintaxes, ex. 1/2 e 'Objetivos'; Adição: 'Lançando e Relançando'
  2. 10/10/2024 - revisão 1 - Correções e ajustes pontuais
  3. 18/03/2024 - versão inicial