public Exception Handle(IExceptionalResolver resolver, Exception src) { var cur = src; foreach (var handlerDesc in this.handlerDefinitions) { var handler = resolver.Resolve(handlerDesc.Value) as IExceptionHandler; cur = handler?.Handle(cur); if (cur == null) { throw new ExceptionManagerConfigurationException(); } } return(this.terminatorType == null ? cur // No terminatorType was defined, the exception will be returned for re-throwing. : Terminate(resolver, cur as TEnd)); }
private Exception Terminate(IExceptionalResolver resolver, TEnd cur) { ((TerminatorBase <TEnd>)resolver.Resolve(this.terminatorType)).Terminate(cur); return(null); }