private static ISafeWrapperExceptionReporter TryGetReporter(ISafeWrapperExceptionReporter defaultReporter = null) { if (defaultReporter == null) { return(StaticExceptionReporters.DefaultSafeWrapperExceptionReporter); } return(defaultReporter); }
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)))); } }
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))); } }
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))); } }