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

56 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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