Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
Esse conteúdo é reimpresso por permissão da Pearson Education, Inc. das Diretrizes de Design da Estrutura: Convenções, Idiomas e Padrões para Bibliotecas .NET Reutilizáveis, 2ª Edição. Essa edição foi publicada em 2008, e desde então o livro foi totalmente revisado na terceira edição. Algumas das informações nesta página podem estar desatualizadas.
Esta seção descreve as exceções padrão fornecidas pela Estrutura e os detalhes de seu uso. A lista não é completa. Consulte a documentação de referência do .NET Framework para uso de outros tipos de exceção do Framework.
Exceção e SystemException
❌ NÃO lance System.Exception ou System.SystemException.
❌ NÃO capture System.Exception
ou System.SystemException
no código da estrutura, a menos que você pretenda relançar.
❌ EVITE capturar System.Exception
ou System.SystemException
, exceto em manipuladores de exceção de nível superior.
ApplicationException
❌ NÃO lance ou derive de ApplicationException.
Exceção de Operação Inválida
✔️ LANCE um InvalidOperationException se o objeto estiver em um estado inadequado.
ArgumentException, ArgumentNullException e ArgumentOutOfRangeException
✔️ LANCE ArgumentException ou um de seus subtipos se argumentos ruins forem passados para um membro. Prefira o tipo de exceção mais derivado, se aplicável.
✔️ DEFINA a propriedade ParamName
ao lançar uma das subclasses de ArgumentException
.
Essa propriedade representa o nome do parâmetro que fez com que a exceção fosse gerada. Observe que a propriedade pode ser definida usando uma das sobrecargas do construtor.
✔️ USE value
para o nome do parâmetro de valor implícito dos setters de propriedade.
NullReferenceException, IndexOutOfRangeException e AccessViolationException
❌ NÃO permita que APIs de chamada pública lancem de forma explícita ou implícita NullReferenceException, AccessViolationException ou IndexOutOfRangeException. Essas exceções são reservadas e geradas pelo mecanismo de execução e, na maioria dos casos, indicam um bug.
Faça a verificação de argumentos para evitar lançar essas exceções. Lançar essas exceções expõe os detalhes de implementação do seu método que podem mudar ao longo do tempo.
StackOverflowException
❌ NÃO lance StackOverflowException explicitamente. A exceção deve ser lançada explicitamente apenas pelo CLR.
❌ NÃO capture StackOverflowException
.
É quase impossível escrever código gerenciado que permaneça consistente na presença de excedentes de pilha arbitrários. As partes não gerenciadas do CLR permanecem consistentes usando testes para mover excedentes de pilha para locais bem definidos, em vez de recuar de excedentes de pilha arbitrários.
ExceçãoDeFaltaDeMemória (OutOfMemoryException)
❌ NÃO lance OutOfMemoryException explicitamente. Essa exceção deve ser lançada apenas pela infraestrutura CLR.
ComException, SEHException e ExecutionEngineException
❌ NÃO lance COMException, ExecutionEngineException e SEHException explicitamente. Essas exceções devem ser lançadas apenas pela infraestrutura CLR.
Partes © 2005, 2009 Microsoft Corporation. Todos os direitos reservados.
Reimpresso por permissão da Pearson Education, Inc. de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition de Krzysztof Cwalina e Brad Abrams, publicado em 22 de outubro de 2008 pela Addison-Wesley Professional como parte da série Microsoft Windows Development Series.