try sirve que practicas personalizadas para net manejo excepciones errores ejemplos definicion como catch capturar buenas asp exception architecture

exception - sirve - Arquitectura de manejo de excepciones



try catch definicion (4)

.NET específico, pero definitivamente tiene información valiosa.

http://www.codeproject.com/KB/architecture/exceptionbestpractices.aspx

¿Alguien tiene las mejores prácticas para el manejo de excepciones?

Cuando busco en la web, encuentro muchas mejores prácticas en un nivel de código (no capturo excepciones generales, no vuelvo a lanzar nuevas excepciones, etc.) Lo que estoy buscando son las mejores prácticas en un nivel superior, cosas como:

  • dentro de una aplicación detecta excepciones en el nivel ui.
  • registre la mayor cantidad de detalles posible, muestre mensajes de error amistosos
  • en más SOA, como las aplicaciones, distinguen entre excepciones funcionales (Usted solicita un cliente específico y espera encontrar uno, pero no encuentra ninguno) y excepciones técnicas (base de datos fuera de línea)
  • no use excepciones para excepciones funcionales
  • distinguir entre excepciones fatales y no fatales
  • distinguir entre las excepciones que hacen posible un reintento o hacer que el reintentar sea totalmente inútil
  • patrones para alertar a las personas de mantenimiento

Cualquier pensamiento y ayuda son muy apreciados, gracias.


@Ilya:

Ese es probablemente uno de los peores artículos que Joel haya escrito (para aquellos que no han leído el enlace, él argumenta "Excepciones consideradas nocivas", así que no las use).

Joel tiene dos problemas con excepciones:

  1. Ellos son invisibles en el código fuente.

    • Pero también lo son los retornos de estado no controlados. Y el estado manejado correctamente vuelve a llenar el flujo normal de los métodos haciéndolos mucho más difíciles de leer.
  2. Crean demasiados puntos de salida posibles para una función.

    • ¿Y qué? Manejar una falla casi siempre requerirá que regrese temprano. Hacer explícitos los puntos de salida solo sirve para desordenar el código.

Ned Batchelder tiene una respuesta excelente (y mucho más larga) a Joel aquí . Joel tiene una breve respuesta aquí , a la que Ned responde de nuevo aquí .

Brad Abrams también tiene un artículo muy bueno sobre el valor de las excepciones aquí .


Me gusta también distinguir entre:

  • excepción debido a la persona que llama de una función
  • excepción debido a un error interno dentro de una función.

Esa es una forma clara de separarme:

  • Excepción dinámica (que puede ocurrir, pero no es necesario que esté explícitamente atrapada, como un argumento ilegal)
  • excepción estática (que debe tratarse explícitamente, debido a un defecto de las partes internas de la aplicación)