Пример #1
0
        private CimResponseType WriteErrorCallback(CimInstance cimError)
        {
            lock (this._jobStateLock)
            {
                this._jobHadErrors = true;
            }
            CimException     cimException          = new CimException(cimError);
            CimJobException  cimJobException       = CimJobException.CreateFromCimException(this.GetDescription(), this.JobContext, cimException);
            ErrorRecord      errorRecord           = cimJobException.ErrorRecord;
            ActionPreference errorActionPreference = this.JobContext.ErrorActionPreference;

            switch (errorActionPreference)
            {
            case ActionPreference.Stop:
            case ActionPreference.Inquire:
            {
                return(this.BlockingWriteError(errorRecord));
            }

            case ActionPreference.Continue:
            {
                this.WriteError(errorRecord);
                return(CimResponseType.Yes);
            }

            default:
            {
                this.WriteError(errorRecord);
                return(CimResponseType.Yes);
            }
            }
        }
Пример #2
0
        internal void ExceptionSafeWrapper(Action action)
        {
            try
            {
                try
                {
                    Dbg.Assert(action != null, "Caller should verify action != null");
                    action();
                }
                catch (CimJobException e)
                {
                    this.ReportJobFailure(e);
                }
                catch (PSInvalidCastException e)
                {
                    this.ReportJobFailure(e);
                }
                catch (CimException e)
                {
                    var cje = CimJobException.CreateFromCimException(this.GetDescription(), this.JobContext, e);
                    this.ReportJobFailure(cje);
                }
                catch (PSInvalidOperationException)
                {
                    lock (_jobStateLock)
                    {
                        bool everythingIsOk = false;
                        if (_jobWasStopped)
                        {
                            everythingIsOk = true;
                        }

                        if (_alreadyReachedCompletedState && _jobHadErrors)
                        {
                            everythingIsOk = true;
                        }

                        if (!everythingIsOk)
                        {
                            Dbg.Assert(false, "PSInvalidOperationException should only happen in certain job states");
                            throw;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                var cje = CimJobException.CreateFromAnyException(this.GetDescription(), this.JobContext, e);
                this.ReportJobFailure(cje);
            }
        }
Пример #3
0
 internal void ExceptionSafeWrapper(Action action)
 {
     try
     {
         try
         {
             action();
         }
         catch (CimJobException cimJobException1)
         {
             CimJobException cimJobException = cimJobException1;
             this.ReportJobFailure(cimJobException);
         }
         catch (PSInvalidCastException pSInvalidCastException1)
         {
             PSInvalidCastException pSInvalidCastException = pSInvalidCastException1;
             this.ReportJobFailure(pSInvalidCastException);
         }
         catch (CimException cimException1)
         {
             CimException    cimException     = cimException1;
             CimJobException cimJobException2 = CimJobException.CreateFromCimException(this.GetDescription(), this.JobContext, cimException);
             this.ReportJobFailure(cimJobException2);
         }
         catch (PSInvalidOperationException pSInvalidOperationException)
         {
             lock (this._jobStateLock)
             {
                 bool flag = false;
                 if (this._jobWasStopped)
                 {
                     flag = true;
                 }
                 if (this._alreadyReachedCompletedState && this._jobHadErrors)
                 {
                     flag = true;
                 }
                 if (!flag)
                 {
                     throw;
                 }
             }
         }
     }
     catch (Exception exception1)
     {
         Exception       exception        = exception1;
         CimJobException cimJobException3 = CimJobException.CreateFromAnyException(this.GetDescription(), this.JobContext, exception);
         this.ReportJobFailure(cimJobException3);
     }
 }
Пример #4
0
        private CimResponseType WriteErrorCallback(CimInstance cimError)
        {
            lock (_jobStateLock)
            {
                _jobHadErrors = true;
            }

            var cimException = new CimException(cimError);
            var jobException = CimJobException.CreateFromCimException(this.GetDescription(), this.JobContext, cimException);
            var errorRecord  = jobException.ErrorRecord;

            switch (this.JobContext.ErrorActionPreference)
            {
            case ActionPreference.Stop:
            case ActionPreference.Inquire:
                return(this.BlockingWriteError(errorRecord));

            default:
                this.WriteError(errorRecord);
                return(CimResponseType.Yes);
            }
        }
Пример #5
0
        internal static CimJobException CreateFromAnyException(string jobDescription, CimJobContext jobContext, Exception inner)
        {
            CimException cimException = inner as CimException;

            if (cimException == null)
            {
                string               str                 = CimJobException.BuildErrorMessage(jobDescription, jobContext, inner.Message);
                CimJobException      cimJobException     = new CimJobException(str, inner);
                IContainsErrorRecord containsErrorRecord = inner as IContainsErrorRecord;
                if (containsErrorRecord == null)
                {
                    cimJobException.InitializeErrorRecord(jobContext, string.Concat("CimJob_", inner.GetType().Name), ErrorCategory.NotSpecified);
                }
                else
                {
                    cimJobException.InitializeErrorRecord(jobContext, string.Concat("CimJob_", containsErrorRecord.ErrorRecord.FullyQualifiedErrorId), containsErrorRecord.ErrorRecord.CategoryInfo.Category);
                }
                return(cimJobException);
            }
            else
            {
                return(CimJobException.CreateFromCimException(jobDescription, jobContext, cimException));
            }
        }