Usar tipos de exceção padrãoUsing Standard Exception Types

Esta seção descreve as exceções padrão fornecidas pela estrutura e os detalhes de uso.This section describes the standard exceptions provided by the Framework and the details of their usage. A lista não é exaustiva.The list is by no means exhaustive. Consulte a documentação de referência do .NET Framework para o uso de outros tipos de exceção do Framework.Please refer to the .NET Framework reference documentation for usage of other Framework exception types.

Exceção e SystemExceptionException and SystemException

X DO NOT gerar System.Exception ou System.SystemException.X DO NOT throw System.Exception or System.SystemException.

X DO NOT catch System.Exception ou System.SystemException no código do framework, a menos que você pretende relançar.X DO NOT catch System.Exception or System.SystemException in framework code, unless you intend to rethrow.

X AVOID capturando System.Exception ou System.SystemException, exceto em manipuladores de exceção de nível superior.X AVOID catching System.Exception or System.SystemException, except in top-level exception handlers.

ApplicationExceptionApplicationException

X DO NOT lançar ou derivam de ApplicationException.X DO NOT throw or derive from ApplicationException.

InvalidOperationExceptionInvalidOperationException

✓ DO lançar um InvalidOperationException se o objeto está em um estado inadequado.✓ DO throw an InvalidOperationException if the object is in an inappropriate state.

ArgumentException, ArgumentNullException, and ArgumentOutOfRangeExceptionArgumentException, ArgumentNullException, and ArgumentOutOfRangeException

✓ DO gerar ArgumentException ou um de seus subtipos se argumentos inválidos são passados para um membro.✓ DO throw ArgumentException or one of its subtypes if bad arguments are passed to a member. Prefira o tipo de exceção mais derivado, se aplicável.Prefer the most derived exception type, if applicable.

✓ DO definir o ParamName propriedade ao lançar uma destas subclasses de ArgumentException.✓ DO set the ParamName property when throwing one of the subclasses of ArgumentException.

Essa propriedade representa o nome do parâmetro que causou a exceção seja lançada.This property represents the name of the parameter that caused the exception to be thrown. Observe que a propriedade pode ser definida usando uma das sobrecargas de construtor.Note that the property can be set using one of the constructor overloads.

✓ DO usar value para o nome do parâmetro de valor implícito de setters de propriedade.✓ DO use value for the name of the implicit value parameter of property setters.

NullReferenceException, IndexOutOfRangeException, and AccessViolationExceptionNullReferenceException, IndexOutOfRangeException, and AccessViolationException

X DO NOT permitir que APIs publicamente que pode ser chamado explicitamente ou implicitamente gerar NullReferenceException, AccessViolationException, ou IndexOutOfRangeException.X DO NOT allow publicly callable APIs to explicitly or implicitly throw NullReferenceException, AccessViolationException, or IndexOutOfRangeException. Essas exceções são reservadas e gerada pelo mecanismo de execução e, na que maioria dos casos indicam um bug.These exceptions are reserved and thrown by the execution engine and in most cases indicate a bug.

Fazer a verificação para evitar o lançamento essas exceções de argumento.Do argument checking to avoid throwing these exceptions. Gerar essas exceções expõe os detalhes da implementação do método que pode ser alterado ao longo do tempo.Throwing these exceptions exposes implementation details of your method that might change over time.

StackOverflowExceptionStackOverflowException

X DO NOT lançar explicitamente StackOverflowException.X DO NOT explicitly throw StackOverflowException. A exceção deve ser explicitamente gerada apenas pelo CLR.The exception should be explicitly thrown only by the CLR.

X DO NOT catch StackOverflowException.X DO NOT catch StackOverflowException.

É quase impossível escrever código gerenciado que permanece consistente na presença de estouros de pilha arbitrário.It is almost impossible to write managed code that remains consistent in the presence of arbitrary stack overflows. As partes não gerenciadas do CLR permaneçam consistentes usando investigações para mover a estouros de pilha para locais bem definidos em vez fazendo-out de estouros de pilha arbitrário.The unmanaged parts of the CLR remain consistent by using probes to move stack overflows to well-defined places rather than by backing out from arbitrary stack overflows.

OutOfMemoryExceptionOutOfMemoryException

X DO NOT lançar explicitamente OutOfMemoryException.X DO NOT explicitly throw OutOfMemoryException. Essa exceção é gerada apenas pela infraestrutura do CLR.This exception is to be thrown only by the CLR infrastructure.

ComException, SEHException e ExecutionEngineExceptionComException, SEHException, and ExecutionEngineException

X DO NOT lançar explicitamente COMException, ExecutionEngineException, e SEHException.X DO NOT explicitly throw COMException, ExecutionEngineException, and SEHException. Essas exceções são seja lançada apenas pela infraestrutura do CLR.These exceptions are to be thrown only by the CLR infrastructure.

Portions © 2005, 2009 Microsoft Corporation. Todos os direitos reservados.Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

Reimpresso com permissão da Pearson Education, Inc. de as diretrizes de Design do Framework: As convenções, linguagens e padrões para bibliotecas do .NET reutilizável, 2nd Edition por Krzysztof Cwalina e Brad Abrams, publicados 22 de outubro de 2008 pela Addison-Wesley Professional, como parte da série de desenvolvimento do Microsoft Windows.Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published Oct 22, 2008 by Addison-Wesley Professional as part of the Microsoft Windows Development Series.

Consulte tambémSee also