EnterpriseLibraryの例外処理アプリケーションブロックの使用について質問があります。
1つ目は「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ブロックなしで例外を処理する「Process」メソッドを使用するにはどうすればよいですか?