in src/DeloitteDigital.Atlas/Mvc/ErrorHandling/ExecuteRendererAndHideOnException.cs [21:52]
public override void Process(RenderRenderingArgs args)
{
try
{
base.Process(args);
}
catch (Exception ex)
{
// don't handle the exception if the rendering is not a view rendering
var rendererAsViewRenderer = args.Rendering.Renderer as ViewRenderer;
if (rendererAsViewRenderer == null)
throw;
// don't handle the exception if the rendering has not opted in to the error handling
if (!(rendererAsViewRenderer.Model is IHideOnError))
throw;
args.Cacheable = false;
try
{
var logService = ServiceLocator.Current.GetInstance<ILogService>();
logService.Error($"Error rendering {args.Rendering.Renderer}", ex, this);
}
catch (Exception) { } // the ILogService interface has not been configured
var rendererWithCustomErrorView = rendererAsViewRenderer.Model as ICustomErrorView;
RenderError(rendererWithCustomErrorView == null ? ErrorViewFile : rendererWithCustomErrorView.ErrorViewFile,
GetErrorRenderingModel(args.Rendering.Renderer.ToString(), ex), args);
}
}