Exemplo n.º 1
0
 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);
         }
     }
 }
Exemplo n.º 2
0
        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);
        }