Example #1
0
        protected override void invoke(Action action)
        {
            _trace.Start();

            try
            {
                action();
            }
            catch (Exception ex)
            {
                _trace.MarkAsFailedRequest();

                if (!_exceptionObserver.WasObserved(ex))
                {
                    _trace.Log(new ExceptionReport("Request failed", ex));
                    _exceptionObserver.RecordHandled(ex);
                }

                throw;
            }
            finally
            {
                _trace.MarkFinished();
            }
        }
        protected override void invoke(Action action)
        {
            _logger.DebugMessage(() => new BehaviorStart(_correlation));

            try
            {
                action();
                _logger.DebugMessage(() => new BehaviorFinish(_correlation));
            }
            catch (Exception ex)
            {
                if (!_exceptionObserver.WasObserved(ex))
                {
                    _logger.DebugMessage(() =>
                    {
                        var log = new BehaviorFinish(_correlation);
                        log.LogException(ex);

                        return(log);
                    });

                    _exceptionObserver.RecordHandled(ex);
                }

                throw;
            }
        }
        private void TryHandle(Exception exception)
        {
            var handlers = _exceptionHandlers.Where(x => x.ShouldHandle(exception)).ToList();

            if (handlers.Count == 0)
            {
                return;
            }

            handlers.Each(x => x.Handle(exception));
            _exceptionHandlingObserver.RecordHandled(exception);
        }