private void ConfigureExceptionHandling()
{
var configurationSource = new DictionaryConfigurationSource();
var builder = new ConfigurationSourceBuilder();
builder
.ConfigureExceptionHandling()
.GivenPolicyWithName(ValidationPolicy)
.ForExceptionType<DeleteConstraintException>()
.HandleCustom<BusinessValidationHandler>()
.ThenThrowNewException()
.ForExceptionType<BusinessValidationException>()
.ThenNotifyRethrow()
.ForExceptionType<BusinessException>()
.HandleCustom<BusinessValidationHandler>()
.ThenThrowNewException()
.GivenPolicyWithName(DefaultPolicy)
.ForExceptionType<Exception>()
.LogToCategory("General")
.WithSeverity(TraceEventType.Critical)
.UsingExceptionFormatter<TextExceptionFormatter>()
.WrapWith<Exception>()
.UsingMessage("An error has occurred while processing request. Please contact your administrator for more information. [Error ID: {handlingInstanceID}]")
.ThenThrowNewException();
builder.UpdateConfigurationWithReplace(configurationSource);
var configurator = new UnityContainerConfigurator(this.Container);
EnterpriseLibraryContainer.ConfigureContainer(configurator, configurationSource);
}