2025-06-16 21:46:27 +05:00

4.0 KiB
Raw Blame History

title, slug
title slug
Уточнение исключения общие-исключения-обработка-ошибок/уточнение-исключения
// Возвращает уточненный текст исключения для пользователя и
// категорию для вызова исключения с уточненным текстом.
//
// Параметры:
//  ИнформацияОбОшибке - ИнформацияОбОшибке - исходная информация об ошибке.
//  ЗаголовокОшибки    - Строка - заголовок, уточняющий ошибку для пользователя и администратора.
//                                Если не указан, тогда возвращается текст исключения без уточнения.
//
//  ОшибкаНаКлиенте - Булево - нужно указать Истина, если уточняется ошибка,
//      которая изначально возникла на клиенте, так как для некоторых ошибок,
//      например, ОшибкаДоступаКЛокальномуФайлу, ОшибкаРаботыСПринтером платформа
//      делает разную обработку (доступ к локальному файлу на клиенте дополняется
//      уточнениями, а на сервере не дополняется), соответственно требуется
//      по-разному вызывать исключение с уточнением.
//
// Возвращаемое значение:
//  Структура:
//   * Текст - Строка - текст ошибки с уточнением (без уточнения, если ЗаголовокОшибки пустой).
//   * Категория - КатегорияОшибки - категория для вызова исключения с уточнением.
//               - Неопределено - если категорию нужно оставить неуказанной
//                   при вызове исключения с уточнением.
Результат = ОбщегоНазначенияКлиентСервер.УточнениеИсключения(ИнформацияОбОшибке, ЗаголовокОшибки, ОшибкаНаКлиенте);

Пример

  Попытка
    ВыполнитьКоманду(...);
  Исключение
    ИнформацияОбОшибке = ИнформацияОбОшибке();

    ЗаголовокОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
      НСтр("ru = 'Не удалось выполнить команду %1 по причине:'"), ИдентификаторКоманды);

    Уточнение = ОбщегоНазначенияКлиентСервер.УточнениеИсключения(ИнформацияОбОшибке, ЗаголовокОшибки);

    ВызватьИсключение(Уточнение.Текст, Уточнение.Категория,,, ИнформацияОбОшибке);

  КонецПопытки;

  Попытка
    СоединениеСИнтернет.Получить(ПутьНаСервере, ПутьДляСохранения);
  Исключение
    ИнформацияОбОшибке = ИнформацияОбОшибке();

    Уточнение = ОбщегоНазначенияКлиентСервер.УточнениеИсключения(ИнформацияОбОшибке);

    ДляАдминистратора = ДиагностикаСоединенияСИнтернет(...);
    
    ВызватьИсключение(Уточнение.Текст, Уточнение.Категория,, ДляАдминистратора, ИнформацияОбОшибке);
  КонецПопытки;