====== Получение информации и описания ошибок ====== ===== ОписаниеОшибки() ===== Це найстаріший та найпростіший метод отримання інформації про помилку. Він повертає звичайний рядок (текст), який містить короткий опис того, що пішло не так. Особливості: Метод вважається застарілим для нових розробок платформи BAS. Його головний мінус — він не дає деталізованого розуміння контексту (стек викликів, точні номери рядків у вкладених модулях тощо). Варіант використання: Швидке виведення помилки на екран у невеликих обробках або старому коді, де не потрібна глибока деталізація. Приклад коду: Попытка Результат = 10 / 0; Исключение ТекстОшибки = ОписаниеОшибки(); Сообщить("Произошла ошибка: " + ТекстОшибки); КонецПопытки; ===== ИнформацияОбОшибке() ===== Цей метод є базовим інструментом для сучасної обробки винятків у BAS. На відміну від попереднього, він повертає не рядок, а спеціальний об'єкт типу ИнформацияОбОшибке. Особливості: Об'єкт містить структуровані властивості: ИмяМодуля, НомерСтроки, Описание, Причина (яка сама може бути таким же об'єктом, якщо помилка вкладена). Сам по собі цей об'єкт не призначений для виведення користувачеві (якщо просто застосувати Сообщить(), виведеться тип об'єкта). Його головне завдання — бути переданим у функції форматування, які описані нижче. Варіант використання: Отримання структурованих даних у блоці Исключение для подальшої передачі в інші методи або аналізу причин збою кодом. Приклад коду: Попытка Результат = 10 / 0; Исключение ДанныеОбОшибке = ИнформацияОбОшибке(); // Дальше объект ДанныеОбОшибке используется для получения текста КонецПопытки; ==== КраткоеПредставлениеОшибки() ==== Функція, яка приймає на вхід об'єкт ИнформацияОбОшибке та повертає текстовий рядок. Особливості: Формує "чистий" та зрозумілий текст без зайвого технічного "сміття" (без стеків викликів і номерів рядків модулів). Це сучасний аналог функції ОписаниеОшибки(). Варіант використання: Виведення повідомлення про проблему кінцевому користувачеві на екран за допомогою методів Сообщить() або ПоказатьПредупреждение(). Користувача не злякають системні коди, він побачить лише суть проблеми. Приклад коду: Попытка Результат = 10 / 0; Исключение Инфо = ИнформацияОбОшибке(); Сообщить(КраткоеПредставлениеОшибки(Инфо)); КонецПопытки; ==== ПодробноеПредставлениеОшибки() ==== Як і попередній метод, ця функція приймає об'єкт ИнформацияОбОшибке, але повертає максимально розгорнутий багаторядковий текст. Особливості: Включає всю доступну технічну інформацію: модулі, номери рядків, повний стек виклику процедур та функцій, які призвели до помилки, а також інформацію про першопричину. Варіант використання: Тільки для розробників та адміністраторів. Оптимально використовувати для запису в Журнал реєстрації, передачі технічних логів на сервер або надсилання повідомлень в службу підтримки. Ніколи не показуйте це користувачеві, щоб не ускладнювати йому роботу. Приклад коду: Попытка Результат = 10 / 0; Исключение Инфо = ИнформацияОбОшибке(); // Выводим пользователю понятный текст Сообщить("Не удалось выполнить операцию. Детали в журнале регистрации."); // Пишем детальную информацию для программиста в лог ЗаписьЖурналаРегистрации( "ВыполнениеОперации", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(Инфо) ); КонецПопытки;