我有一个关于使用企业库异常处理应用程序块的问题。
首先是“ExceptionManager.Process”方法。我从文档中了解到的是,您可以执行所需的方法,如果它有异常,则 ExceptionManager 会处理它,并且它不需要任何 try-catch 块。但是当我使用它时,它会抛出异常。
builder.ConfigureExceptionHandling()
.GivenPolicyWithName("Data Access Policy")
.ForExceptionType<Exception>()
.LogToCategory("General")
.WithSeverity(System.Diagnostics.TraceEventType.Error)
.UsingEventId(9000)
.WrapWith<InvalidOperationException>()
.UsingMessage("MyMessage").ThenDoNothing();
#endregion
var configSource = new DictionaryConfigurationSource();
builder.UpdateConfigurationWithReplace(configSource);
EnterpriseLibraryContainer.Current = EnterpriseLibraryContainer.CreateDefaultContainer(configSource);
#endregion
var exManager = EnterpriseLibraryContainer.Current.GetInstance<ExceptionManager>();
exManager.Process(GenerateException, "Data Access Policy");
}
private static void GenerateException()
{
throw new NullReferenceException();
}
我已经使用 fluent-API 来配置应用程序块。我想将异常记录到数据库中,并且我已经很好地配置了它。ExeptionManager.HandleException 运行良好,但它需要位于 try-catch 块中。
如何使用“处理”方法来处理不中断且不使用 try-catch 块的异常?