Percursos
/
C#
C#
/
Programa
/
Exceções definidas pelo utilizador
Ex

Exceções definidas pelo utilizador em C#

1 exercício

Sobre Exceções definidas pelo utilizador

Uma exceção definida pelo utilizador é qualquer classe definida no teu código que derive de System.Exception. Está sujeita a todas as regras da herança de classes, mas, além disso, o compilador e o runtime da linguagem tratam essas classes de forma especial, permitindo que as suas instâncias sejam lançadas e capturadas fora do fluxo de controlo normal, como se explica no exercício exceptions. As exceções definidas pelo utilizador podem ser usadas de todas as formas, tal como as exceções do runtime e da Microsoft Base Class Library.

Este tratamento especial aplica-se apenas a classes derivadas de Exception. Não podes lançar instâncias de qualquer outro tipo.

As exceções definidas pelo utilizador são frequentemente usadas para transportar informação extra, como uma mensagem e outros dados relevantes, que fiquem disponíveis para as rotinas que as capturam. Essa informação pode depois ser registada em logs, apresentada ao utilizador ou usada numa operação de nova tentativa. A System.Exception tem membros de dados convenientes e construtores adequados para guardar uma mensagem e a exceção "interna".

Por convenção, os nomes das classes de exceção terminam em "Exception", por exemplo MyTerribleException.

Embora usar exceções definidas pelo utilizador para envolver e melhorar exceções de terceiros seja um padrão frequente, o conselho geral é não as usar de forma demasiado liberal no teu próprio código fora deste caso de uso. É considerado um anti-padrão. Há quem conteste esta visão e podes ver os dois lados do argumento neste post do Stack Exchange.

Este artigo é uma boa introdução às exceções definidas pelo utilizador.

No âmbito das suas orientações sobre criar e lançar exceções, a equipa .NET recomenda que as exceções definidas pelo utilizador tenham vários construtores de conveniência. Para a maioria dos casos, a combinação ilustrada abaixo é adequada.

public class IncompleteExerciseException : System.Exception
{
    public IncompleteExerciseException() : base() { }
    public IncompleteExerciseException(string message) : base(message) { }
    public IncompleteExerciseException(string message, System.Exception inner) : base(message, inner) { }
}
Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Exceções definidas pelo utilizador