Skip to content

Latest commit

 

History

History
94 lines (74 loc) · 5.45 KB

File metadata and controls

94 lines (74 loc) · 5.45 KB

Создание ошибок

Библиотека дополняет стандартную ИнформацияОбОшибке собственными метаданными, которые распознаются РазборОшибки. Для этого используйте ФабрикаОшибок или класс ПостроительОшибки.

Новая ошибка

Создать() начинает новую цепочку с кодом ошибки, сообщением и необязательными данными:

Ошибка = ФабрикаОшибок.Создать(
    "validation.invalid_email",
    "Некорректный адрес электронной почты",
    Новый Структура("Адрес", Адрес)
);

ВызватьИсключение Ошибка;

Создать(), ОбернутьКонтекстом() и Обернуть() возвращают стандартную ИнформацияОбОшибке. Результат можно передать в ВызватьИсключение напрямую. После перехвата создайте разбор для удобного доступа к коду, данным, подсказке и всей цепочке:

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

Код ошибки состоит из двух или более частей, разделённых точками. Каждый сегмент начинается с латинской или кириллической буквы, а затем может содержать буквы, цифры и _. Регистр игнорируется. Текст сообщения можно изменять и локализовывать независимо от кода.

Добавление контекста

ОбернутьКонтекстом() описывает выполнявшуюся операцию, не изменяя код ошибки в причине:

Ошибка = ФабрикаОшибок.ОбернутьКонтекстом(
    Причина,
    "Загрузка профиля пользователя",
    Новый Структура("Идентификатор", ИдентификаторПользователя)
);

Оборачивание новым кодом

Обернуть() создаёт новый кадр с кодом ошибки и сохраняет переданную причину в цепочке:

Ошибка = ФабрикаОшибок.Обернуть(
    Причина,
    "profile.load_failed",
    "Не удалось загрузить профиль",
    Новый Структура("Идентификатор", ИдентификаторПользователя)
);

После оборачивания эффективным кодом будет profile.load_failed, но разбор позволит найти и код исходной причины.

Fluent-построитель

Для поэтапной настройки произвольной ошибки создайте ПостроительОшибки напрямую:

Ошибка = Новый ПостроительОшибки("http.proxy_error", "Не удалось подключиться через прокси")
    .Данные("Адрес", АдресПрокси)
    .Подсказка("Проверьте переменную HTTPS_PROXY")
    .URL("https://example.org/errors/http-proxy-error")
    .Причина(Причина)
    .Построить();

Без вызова Причина() построитель создаёт новую цепочку. С указанной причиной он создаёт обёрнутую ошибку. Данные(Ключ, Значение) поэтапно формирует структуру; повторный ключ заменяет ранее установленное значение. Для готового произвольного значения используйте ПроизвольныеДанные(Значение). Эти два режима нельзя смешивать в одном построителе. Повторный вызов остальных fluent-методов заменяет ранее установленное значение. URL(Значение) задаёт адрес страницы с подробным описанием ошибки. Библиотека проверяет только строковый тип, не разбирает адрес, не ограничивает его схему и не выполняет сетевых запросов.

Для стандартных кодов используйте СтандартныеОшибки, если нужна готовая ошибка, или ПостроителиСтандартныхОшибок, если её требуется обогатить перед построением.