public override void ErrorHanding(Exception exception, ProductInfo product) { try { throw exception; } catch (OperationCanceledException) { } // Утечка в системе catch (SetPressureTimeoutException) { product.Error = TestErrorEnum.Leakage; throw new OperationCanceledException(); } // Изделие не поддерживается пневмосистемой catch (PsysSupportException) { product.Error = TestErrorEnum.RangeNotSupportByPsys; throw new OperationCanceledException(); } // Авария амперметра catch (SDM_ErrException ex) { // Выводим сообщение и отменяем операцию product.Error = TestErrorEnum.SystemError; sysStatus.AmmetrStatusMessage = ex.Message; sysStatus.AmmetrStatus = StatusEnum.Error; Cancel(ex.Message); } // Авария пневмосистемы catch (PressSystemException ex) { // Выводим сообщение и отменяем операцию product.Error = TestErrorEnum.SystemError; sysStatus.PressSystemStatusMessage = ex.Message; sysStatus.PressSystemStatus = StatusEnum.Error; Cancel(ex.Message); } catch (ParseDeviceNameException) { // Выводим сообщение и отменяем операцию throw; } // Неисправность изделия. Измеренный ток ниже нижнего предела catch (LoCurrentAlarmException) { product.Error = TestErrorEnum.AlarmLoLimit; throw new OperationCanceledException(); } // Неисправность изделия. Измеренный ток выше верхнего предела catch (HiCurrentAlarmException) { product.Error = TestErrorEnum.AlarmHiLimit; throw new OperationCanceledException(); } // Непредусмотренные ошибки catch (Exception ex) { product.Error = TestErrorEnum.SystemError; Cancel("Непредусмотренная ошибка. Обратитесь к разработчику:\r\n" + ex.Message); } }
public virtual void ErrorHanding(Exception exception, ProductInfo product) { try { throw exception; } catch (OperationCanceledException) { } // Утечка в системе catch (SetPressureTimeoutException ex) { product.Error = TestErrorEnum.Leakage; string message = ex.Message + ". Возможно, нарушена герметичность изделия"; if (!settings.UsedStandDatabase) { Cancel(message); } else { // Работа с базой // Спрашиваем, браковать или нет RejectDialog(message, (int)product.Error); } } // Изделие не поддерживается пневмосистемой catch (PsysSupportException ex) { product.Error = TestErrorEnum.RangeNotSupportByPsys; if (!settings.UsedStandDatabase) { Cancel(ex.Message); } else { // Работа с базой // Спрашиваем, браковать или нет RejectDialog(ex.Message, (int)product.Error); } } // Авария амперметра catch (SDM_ErrException ex) { // Выводим сообщение и отменяем операцию product.Error = TestErrorEnum.SystemError; sysStatus.AmmetrStatusMessage = ex.Message; sysStatus.AmmetrStatus = StatusEnum.Error; Cancel(ex.Message); } // Авария пневмосистемы catch (PressSystemException ex) { // Выводим сообщение и отменяем операцию product.Error = TestErrorEnum.SystemError; sysStatus.PressSystemStatusMessage = ex.Message; sysStatus.PressSystemStatus = StatusEnum.Error; Cancel(ex.Message); } // Неисправность изделия. Измеренный ток ниже допустимого предела catch (LoCurrentAlarmException) { product.Error = TestErrorEnum.AlarmLoLimit; Cancel("Измеренный ток ниже допустимого предела"); } // Неисправность изделия. Измеренный ток выше допустимого предела catch (HiCurrentAlarmException) { product.Error = TestErrorEnum.AlarmHiLimit; Cancel("Измеренный ток выше допустимого предела"); } // Ошибка открытия порта цифрового датчика catch (OpenConnectPortException) { product.Error = TestErrorEnum.OpenPortError; Cancel("Ошибка открытия порта связи с поверяемым ПД"); } // Ошибка подключения (для датчиков с цифровым интерфейсом) catch (ConnectException) { product.Error = TestErrorEnum.ConnectError; Cancel("Не удалось установить связь с поверяемым ПД"); } // Потеря связи (для датчиков с цифровым интерфейсом) catch (LostConnectException) { product.Error = TestErrorEnum.LostConnect; Cancel("Потеря связи связи с поверяемым ПД"); } // Непредусмотренные ошибки catch (Exception ex) { product.Error = TestErrorEnum.SystemError; Cancel("Непредусмотренная ошибка. Обратитесь к разработчику:\r\n" + ex.Message); } }
public void SaveResult(ProductInfo product, TestResults results, IDialogService dialogService) { // Смысл формировать и посылать Json есть только когда статус продукта 0 - нет ошибок, или 14 - не прошел по точности, // или 18 - забракован оператором или 19 - большая вариация // Если были другие ошибки, то и результатов нет, формировать Json не из чего product.ClosingDateTime = DateTime.Now; try { string jsonContent = null; string fileName = null; if ((product.Error == TestErrorEnum.NoError || product.Error == TestErrorEnum.BadPrecision || product.Error == TestErrorEnum.OperatorSolution || product.Error == TestErrorEnum.BadVariation)) { var jsonAdapter = new JsonAdapter(settings.JsonReportSettings); jsonAdapter.AddResults(product.Device.SerialNumber, product.Device.DeviceTypeCode, product.Device.SensorTypeCode, product.PrimaryTest, results, new PressureIndication(product.Device.Range.Pressure_Pa), product.Error == 0, product.ClosingDateTime, product.Device.MetrologicGroupNumber); jsonContent = jsonAdapter.JsonReportResult.GetJsonByString(); fileName = jsonAdapter.JsonReportResult.GetFileName(); } // Передача в базу стенда if (settings.UsedStandDatabase) { db.AddTestInfo(product, jsonContent); sysStatus.DataBaseStatus = StatusEnum.Ok; } // Передача на сервер if (settings.JsonReportSettings.ArchivingJsonFile && !string.IsNullOrEmpty(fileName)) { archiving.Save(fileName, jsonContent); sysStatus.ServerStatus = StatusEnum.Ok; } } catch (DbException ex) { sysStatus.DataBaseStatusMessage = ex.Message; sysStatus.DataBaseStatus = StatusEnum.Error; if (!settings.UsedRemoteControl) { bool dialResult = dialogService.ErrorTwoButtonDialog(ex.Message + "\r\nЧтобы повторить попытку нажмите \"OK\". Для отмены операции нажмите \"Отмена\""); if (dialResult) { SaveResult(product, results, dialogService); // Повторим операцию } else { throw new OperationCanceledException(); } } else { product.Error = TestErrorEnum.SystemError; throw new OperationCanceledException(); } } catch (SavingToLocalFolderException ex) { string message = "Не удалось сохранить результаты в формате JSON ни на удаленном сервере, ни в локальной директории:\r\n" + ex.Message; sysStatus.ServerStatusMessage = message; sysStatus.ServerStatus = StatusEnum.Error; dialogService.ErrorMessage(message); throw new OperationCanceledException(); } catch (SavingToRemoteArchiveException ex) { // Json сохранился в локальной папке, можно продолжать. При восстановлении связи, файлы будут переданы на сервыер sysStatus.ServerStatusMessage = ex.Message; sysStatus.ServerStatus = StatusEnum.Warning; // dialogService.WarningMessage(ex.Message); } }