Utilizzo di tipi di eccezioni standardUsing Standard Exception Types

In questa sezione descrive le eccezioni standard fornite dal Framework e i dettagli del loro utilizzo.This section describes the standard exceptions provided by the Framework and the details of their usage. L'elenco è in alcun modo esaustivo.The list is by no means exhaustive. Consultare la documentazione di riferimento di .NET Framework per l'utilizzo di altri Framework dei tipi di eccezione.Please refer to the .NET Framework reference documentation for usage of other Framework exception types.

Eccezione e SystemExceptionException and SystemException

X DO NOT throw System.Exception o System.SystemException.X DO NOT throw System.Exception or System.SystemException.

X DO NOT catch System.Exception o System.SystemException nel codice del framework, a meno che non si intende generare di nuovo.X DO NOT catch System.Exception or System.SystemException in framework code, unless you intend to rethrow.

X AVOID intercettazione System.Exception o System.SystemException, ad eccezione dei gestori di eccezioni di livello superiore.X AVOID catching System.Exception or System.SystemException, except in top-level exception handlers.

ApplicationExceptionApplicationException

X DO NOT generare o derivare da ApplicationException.X DO NOT throw or derive from ApplicationException.

InvalidOperationExceptionInvalidOperationException

✓ DO generano un InvalidOperationException se l'oggetto è in uno stato non appropriato.✓ DO throw an InvalidOperationException if the object is in an inappropriate state.

ArgumentException ArgumentNullException e dell'eccezione ArgumentOutOfRangeExceptionArgumentException, ArgumentNullException, and ArgumentOutOfRangeException

✓ DO throw ArgumentException o uno dei sottotipi se a un membro vengono passati argomenti non validi.✓ DO throw ArgumentException or one of its subtypes if bad arguments are passed to a member. Preferisce il tipo più derivato di eccezione, se applicabile.Prefer the most derived exception type, if applicable.

✓ DO impostare il ParamName proprietà durante la generazione di una delle sottoclassi di ArgumentException.✓ DO set the ParamName property when throwing one of the subclasses of ArgumentException.

Questa proprietà rappresenta il nome del parametro che ha causato l'eccezione viene generata.This property represents the name of the parameter that caused the exception to be thrown. Si noti che la proprietà può essere impostata usando uno degli overload del costruttore.Note that the property can be set using one of the constructor overloads.

✓ DO utilizzare value per il nome del parametro del valore implicito dell'impostazione delle proprietà.✓ DO use value for the name of the implicit value parameter of property setters.

NullReferenceException, IndexOutOfRangeException, and AccessViolationExceptionNullReferenceException, IndexOutOfRangeException, and AccessViolationException

X DO NOT consentire pubblicamente disponibile per la chiamata API generare in modo esplicito o implicito NullReferenceException, AccessViolationException, o IndexOutOfRangeException.X DO NOT allow publicly callable APIs to explicitly or implicitly throw NullReferenceException, AccessViolationException, or IndexOutOfRangeException. Queste eccezioni sono riservate e generate dal motore di esecuzione e nella che maggior parte dei casi indica un bug.These exceptions are reserved and thrown by the execution engine and in most cases indicate a bug.

Eseguire un controllo per evitare la generazione di queste eccezioni di argomento.Do argument checking to avoid throwing these exceptions. Generazione di queste eccezioni espone i dettagli di implementazione del metodo che possono cambiare nel tempo.Throwing these exceptions exposes implementation details of your method that might change over time.

StackOverflowExceptionStackOverflowException

X DO NOT generare in modo esplicito StackOverflowException.X DO NOT explicitly throw StackOverflowException. L'eccezione deve essere generato in modo esplicito solo da CLR.The exception should be explicitly thrown only by the CLR.

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

È quasi impossibile scrivere il codice gestito che rimane consistente in presenza di un overflow dello stack arbitrario.It is almost impossible to write managed code that remains consistent in the presence of arbitrary stack overflows. Le parti non gestite di Common Language Runtime rimangano coerente per l'uso di probe per spostare gli overflow dello stack a posizioni ben definiti anziché per il backup da un overflow dello stack arbitrario.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 generare in modo esplicito OutOfMemoryException.X DO NOT explicitly throw OutOfMemoryException. Questa eccezione viene generata solo dall'infrastruttura di CLR.This exception is to be thrown only by the CLR infrastructure.

ComException SEHException ed ExecutionEngineExceptionComException, SEHException, and ExecutionEngineException

X DO NOT generare in modo esplicito COMException, ExecutionEngineException, e SEHException.X DO NOT explicitly throw COMException, ExecutionEngineException, and SEHException. Queste eccezioni devono essere generate solo dall'infrastruttura di CLR.These exceptions are to be thrown only by the CLR infrastructure.

Parti protette da copyright © 2005, 2009 Microsoft Corporation. Tutti i diritti riservati.Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

Ristampato con l'autorizzazione di Pearson Education, Inc. dal linee guida di progettazione di Framework: Convenzioni, linguaggi e modelli per le librerie .NET di riutilizzabile, 2nd Edition Krzysztof Cwalina e Brad Abrams, pubblicato il 22 ottobre 2008 da Addison-Wesley Professional come parte della serie di sviluppo di 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.

Vedere ancheSee also