Leitura recomendada
        
    
    
    
        
Objetivos
        
    
    
    
        
Criando uma Exception customizada
    
    
        
            
                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
            
-
         
     
    
        
Adicionando atributos e métodos
    
    
        
            
                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
            
-
         
     
    
        
Lançando e relançando
    
    
        
            
                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
         
     
    
        Histórico de atualizações
        
     
    
        
            
                - 13/08/2025 - revisão 2 - Ajustes: pontuais, sintaxes, ex. 1/2 e 'Objetivos'; Adição: 'Lançando e Relançando'
 
                - 10/10/2024 - revisão 1 - Correções e ajustes pontuais
 
                - 18/03/2024 - versão inicial
 
            
         
     
    
            
            
                
                    
                    Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
                em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.