Pregunta

Tengo que implementar un IExceptionHandler para Enteprise Library 4.1. En mi caso particular, quiero usarlo para registrar la excepción en Fogbugz pero los detalles internos no son lo que estoy preguntando. Lo que necesito es cómo - las mejores prácticas - implementarlo, cómo obtener la configuración para un app.config o web.config. etc.

Tengo código Esto hasta ahora:

   public class LcpFogbugzExceptionHandler : IExceptionHandler {
   /// <summary>
   /// Initializes a new instance of the <see cref="LcpFogbugzExceptionHandler"/> class.
   /// </summary>
   public LcpFogbugzExceptionHandler() {
        // <param name="ignore">The ignore.</param>
        //NameValueCollection ignore
    }

    /// <summary>
    /// Initializes a new instance of the <see cref="T:LcpFogbugzExceptionHandler"/> class.
    /// </summary>
    /// <param name="ignore">The ignore.</param>
   public LcpFogbugzExceptionHandler(NameValueCollection ignore) {
   }

    /// <summary>
    /// Handles the exception.
    /// </summary>
    /// <param name="exception">The exception.</param>
    /// <param name="handlingInstanceId">The handling instance id.</param>
    /// <returns></returns>
   [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1300:SpecifyMessageBoxOptions"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Convert.ToBoolean(System.String)")]
    public Exception HandleException(Exception exception, Guid handlingInstanceId) {
        // Perform processing here. The exception returned will be passed to the next
        // exception handler in the chain. 

        return exception;
    }

}
¿Fue útil?

Solución

No estoy seguro de lo que quiere decir con mejores prácticas: tiene el código de código correcto, así que llénelo con su implementación. Puntos aleatorios que podrían ser útiles:

Puede leer las configuraciones de configuración de la manera normal ( ConfigurationManager etc.). Su controlador se está ejecutando en el mismo proceso y subproceso que se denominó ExceptionPolicy.HandleException en primer lugar.

Sería una buena idea hacer que el código del controlador sea seguro para subprocesos, en caso de que tenga que manejar excepciones en varios subprocesos (y si no lo hace en este proyecto, es posible que deba hacerlo en el siguiente). / p>

Si desea pasar datos de instancia no estáticos al controlador desde el código de llamada, puede llenar el diccionario Data de la excepción que se está manejando, que se conservará intacta a través de todo el controlador. encadenar y salir al código de llamada de nuevo. He utilizado esta técnica para enviar datos a un controlador, obtener datos de un controlador y permitir que un controlador controle las acciones del siguiente en la cadena. Si hace esto, asegúrese de que todos los valores de Data sean serializables.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top