コード例 #1
0
        private static ISafeWrapperExceptionReporter TryGetReporter(ISafeWrapperExceptionReporter defaultReporter = null)
        {
            if (defaultReporter == null)
            {
                return(StaticExceptionReporters.DefaultSafeWrapperExceptionReporter);
            }

            return(defaultReporter);
        }
コード例 #2
0
        public static SafeWrapper <T> SafeWrap <T>(Func <T> func, ISafeWrapperExceptionReporter reporter = null)
        {
            if (!AssertNotNull(func))
            {
                return(new SafeWrapper <T>(default(T), OperationErrorCode.InvalidArgument, new ArgumentException(), "Passed-in function delegate is null"));
            }

            try
            {
                return(new SafeWrapper <T>(func.Invoke(), OperationErrorCode.Success, "Operation completed successfully"));
            }
            catch (Exception e)
            {
                reporter = TryGetReporter(reporter);

                return(new SafeWrapper <T>(default(T), reporter.GetStatusResult(e, typeof(T))));
            }
        }
コード例 #3
0
        public static SafeWrapperResult SafeWrap(Action action, ISafeWrapperExceptionReporter reporter = null)
        {
            if (!AssertNotNull(action))
            {
                return(new SafeWrapperResult(OperationErrorCode.InvalidArgument, new ArgumentException(), "Passed-in function delegate is null"));
            }

            try
            {
                action.Invoke();
                return(new SafeWrapperResult(OperationErrorCode.Success, "Operation completed successfully"));
            }
            catch (Exception e)
            {
                reporter = TryGetReporter(reporter);

                return(new SafeWrapperResult(reporter.GetStatusResult(e)));
            }
        }
コード例 #4
0
        public static async Task <SafeWrapperResult> SafeWrapAsync(Func <Task> func, ISafeWrapperExceptionReporter reporter = null)
        {
            if (!AssertNotNull(func))
            {
                return(new SafeWrapperResult(OperationErrorCode.InvalidArgument, new ArgumentException(), "Passed-in function delegate is null"));
            }

            try
            {
                await func.Invoke();

                return(new SafeWrapperResult(OperationErrorCode.Success, "Operation completed successfully"));
            }
            catch (Exception e)
            {
                reporter = TryGetReporter(reporter);

                return(new SafeWrapperResult(reporter.GetStatusResult(e)));
            }
        }