В корпоративной библиотеке я не получал достаточного количества информации, помещаемой в мои журналы, поэтому я начал писать этот обработчик для извлечения специфических для исключения свойств и добавления их в строку сообщения:
[ConfigurationElementType(typeof(CustomHandlerData))]
public class ExposeDetailExceptionHandler : IExceptionHandler
{
public Exception HandleException(Exception exception, Guid handlingInstanceId)
{
if (exception is System.Net.WebException)
return ExposeDetail((System.Net.WebException)exception);
if (exception is System.Web.Services.Protocols.SoapException)
return ExposeDetail((System.Web.Services.Protocols.SoapException)exception);
return exception;
}
private Exception ExposeDetail(System.Net.WebException Exception)
{
string details = "";
details += "System.Net.WebException: " + Exception.Message + Environment.NewLine;
details += "Status: " + Exception.Status.ToString() + Environment.NewLine;
return new Exception(details, Exception);
}
private Exception ExposeDetail(System.Web.Services.Protocols.SoapException Exception)
{
//etc
}
}
(Кроме того, есть ли лучший способ выбрать, какая версия ExposeDetail запускается?)
Это лучший или приемлемый способ для записи этих деталей, я изначально думал, что мне следует реализовать ExceptionFormatter, но это казалосьнамного проще