Библиотека предприятия Как реализовать IExceptionHandler?
Я должен реализовать IExceptionHandler для библиотеки Enteprise 4.1. В моем конкретном случае я хочу использовать это, чтобы записать исключение в Fogbugz, но внутренние детали - это не то, о чем я спрашиваю. Что мне нужно, это как - лучшие практики - реализовать это, как получить конфигурацию для app.config или web.config. и т.п.
У меня есть код Это до сих пор:
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;
}
}
1 ответ
Я не уверен, что вы подразумеваете под лучшими практиками - у вас правильный скелет кода, поэтому просто заполните его своей реализацией. Случайные точки, которые могут быть полезны:
Вы можете прочитать настройки конфигурации обычным способом (ConfigurationManager
так далее). Ваш обработчик работает в том же процессе и потоке, который вызвал ExceptionPolicy.HandleException
на первом месте.
Было бы неплохо сделать код обработчика потокобезопасным на тот случай, если вам придется обрабатывать исключения в нескольких потоках (а если вы этого не сделаете в этом проекте, вам может понадобиться в следующем).
Если вы хотите передать любые нестатические данные экземпляра в обработчик из вызывающего кода, вы можете заполнить Data
словарь обрабатываемой исключительной ситуации, который будет сохранен в целой цепочке обработчиков и снова выведен в вызывающий код. Я использовал эту технику, чтобы отправить данные в обработчик, получить данные обратно из обработчика и позволить одному обработчику управлять действиями следующего в цепочке. Если вы делаете это, убедитесь, что все Data
значения сериализуемы.