Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Este contenido se reimprime con permiso de Pearson Education, Inc. de Directrices de diseño de frameworks: Convenciones, expresiones y patrones para bibliotecas reutilizables de .NET, 2ª edición. Esa edición fue publicada en 2008, y el libro ha sido totalmente revisado en la tercera edición. Parte de la información de esta página puede estar obsoleta.
En esta sección se describen las excepciones estándar proporcionadas por framework y los detalles de su uso. La lista no es exhaustiva. Consulte la documentación de referencia de .NET Framework para el uso de otros tipos de excepciones de Framework.
Excepción y SystemException
❌ NO inicie System.Exception ni System.SystemException.
❌ NO capture System.Exception ni System.SystemException en el código de Framework, a menos que tenga previsto volver a iniciar.
❌ EVITE detectar System.Exception o System.SystemException, excepto en controladores de excepciones de nivel superior.
ApplicationException
❌ NO inicie ni obtenga de ApplicationException.
Excepción de Operación Inválida
✔️ INICIE InvalidOperationException si el objeto está en un estado inadecuado.
ArgumentException, ArgumentNullException y ArgumentOutOfRangeException
✔️ INICIE ArgumentException o uno de sus subtipos si se pasan argumentos incorrectos a un miembro. Prefiere el tipo de excepción más derivado, si procede.
✔️ ESTABLEZCA la propiedad ParamName al iniciar una de las subclases de ArgumentException.
Esta propiedad representa el nombre del parámetro que produjo la excepción. Tenga en cuenta que la propiedad se puede establecer mediante una de las sobrecargas del constructor.
✔️ USE value para el nombre del parámetro de valor implícito de los establecedores de propiedades.
NullReferenceException, IndexOutOfRangeException y AccessViolationException
❌ NO permita que las API que se pueden llamar públicamente lancen NullReferenceException de manera explícita o implícita, AccessViolationException o IndexOutOfRangeException. Estas excepciones están reservadas y producidas por el motor de ejecución y, en la mayoría de los casos, indican un error.
Haga comprobación de argumentos para evitar lanzar estas excepciones. Al lanzar estas excepciones, se exponen los detalles de implementación de tu método que podrían cambiar con el tiempo.
StackOverflowException
❌ NO inicie explícitamente StackOverflowException. La excepción solo debe iniciarse explícitamente mediante CLR.
❌ NO capture StackOverflowException.
Es casi imposible escribir código administrado que siga siendo coherente en presencia de desbordamientos de pila arbitrarios. Las partes no administradas de CLR siguen manteniendo la coherencia mediante sondeos para mover los desbordamientos de pila a lugares bien definidos en lugar de salir de desbordamientos de pila arbitrarios.
OutOfMemoryException
❌ NO inicie explícitamente OutOfMemoryException. Esta excepción solo la inicia la infraestructura de CLR.
ComException, SEHException y ExecutionEngineException
❌ NO inicie explícitamente COMException, ExecutionEngineException ni SEHException. Estas excepciones solo las inicia la infraestructura de CLR.
© Partes 2005, 2009 de Microsoft Corporation. Todos los derechos reservados.
Reimpreso con permiso de Pearson Education, Inc. de Framework Design Guidelines: Convenciones, Idiomas y Patrones para Bibliotecas .NET Reusables, 2ª Edición por Krzysztof Cwalina y Brad Abrams, publicado el 22 de octubre de 2008 por Addison-Wesley Professional como parte de la Serie Desarrollo de Microsoft Windows.