internal static void TranslateXsoExceptions(IDiagnosticsSession tracer, LocalizedString errorString, XsoUtil.XsoExceptionHandlingFlags flags, Action xsoCall) { try { xsoCall(); } catch (ConnectionFailedTransientException ex) { XsoUtil.TraceAndThrowTransientException(tracer, errorString, ex); } catch (ConnectionFailedPermanentException ex2) { XsoUtil.TraceAndThrowPermanentException(tracer, errorString, ex2); } catch (MailboxUnavailableException ex3) { XsoUtil.TraceAndThrowPermanentException(tracer, errorString, ex3); } catch (ObjectNotFoundException ex4) { if ((flags & XsoUtil.XsoExceptionHandlingFlags.DoNotExpectObjectNotFound) == XsoUtil.XsoExceptionHandlingFlags.DoNotExpectObjectNotFound) { tracer.SendInformationalWatsonReport(ex4, null); if ((flags & XsoUtil.XsoExceptionHandlingFlags.RethrowUnexpectedExceptions) == XsoUtil.XsoExceptionHandlingFlags.RethrowUnexpectedExceptions) { XsoUtil.TraceAndThrowPermanentException(tracer, errorString, ex4); } } else { tracer.TraceDebug <LocalizedString, ObjectNotFoundException>("Error: {0}, exception: {1}", errorString, ex4); } } catch (CorruptDataException ex5) { if ((flags & XsoUtil.XsoExceptionHandlingFlags.DoNotExpectCorruptData) == XsoUtil.XsoExceptionHandlingFlags.DoNotExpectCorruptData) { tracer.SendInformationalWatsonReport(ex5, null); if ((flags & XsoUtil.XsoExceptionHandlingFlags.RethrowUnexpectedExceptions) == XsoUtil.XsoExceptionHandlingFlags.RethrowUnexpectedExceptions) { XsoUtil.TraceAndThrowPermanentException(tracer, errorString, ex5); } } else { tracer.TraceDebug <LocalizedString, CorruptDataException>("Error: {0}, exception: {1}", errorString, ex5); } } catch (AccessDeniedException ex6) { tracer.SendWatsonReport(ex6); XsoUtil.TraceAndThrowPermanentException(tracer, errorString, ex6); } catch (StoragePermanentException ex7) { if (ex7.GetType() != typeof(StoragePermanentException)) { tracer.SendInformationalWatsonReport(ex7, null); } if ((flags & XsoUtil.XsoExceptionHandlingFlags.RethrowUnexpectedExceptions) == XsoUtil.XsoExceptionHandlingFlags.RethrowUnexpectedExceptions) { XsoUtil.TraceAndThrowPermanentException(tracer, errorString, ex7); } } catch (StorageTransientException ex8) { if (ex8.GetType() != typeof(StorageTransientException)) { tracer.SendInformationalWatsonReport(ex8, null); } if ((flags & XsoUtil.XsoExceptionHandlingFlags.RethrowUnexpectedExceptions) == XsoUtil.XsoExceptionHandlingFlags.RethrowUnexpectedExceptions) { XsoUtil.TraceAndThrowPermanentException(tracer, errorString, ex8); } } }
internal static TReturnValue TranslateXsoExceptionsWithReturnValue <TReturnValue>(IDiagnosticsSession tracer, LocalizedString errorString, XsoUtil.XsoExceptionHandlingFlags flags, Func <TReturnValue> xsoCall) { TReturnValue result = default(TReturnValue); XsoUtil.TranslateXsoExceptions(tracer, errorString, flags, delegate() { result = xsoCall(); }); return(result); }