Esempio n. 1
0
        /// <summary>
        /// Handles the exception.
        /// </summary>
        /// <param name="exception">the exception.</param>
        /// <param name="process">the process.</param>
        /// <exception cref="ArgumentOutOfRangeException">Invalid enumeration type.</exception>
        public void Handle(Exception exception, IProcess process)
        {
            switch (this.decider.Decision(exception))
            {
            case Directive.Restart:
                process.Restart();
                break;

            case Directive.Resume:
                process.Resume();
                break;

            case Directive.Stop:
                process.Stop();
                break;

            case Directive.Escalate:
                process.Escalate(exception);
                break;

            default:
                throw new InvalidOperationException(nameof(Directive));
            }
        }