Відображення помилок
Повідомлення про помилку містить іконку, яка відповідає категорії помилки, текст, а також може містити посилання для формування звіту про помилку.
Декларативне налаштування тексту повідомлення про помилку
Фахівці з впровадження та адміністратори інформаційних баз мають можливість налаштовувати повідомлення про помилки без використання програмування. Зокрема, вони можуть додавати у повідомлення про помилки інформацію, специфічну для конкретного впровадження або поточного етапу роботи (телефони, прізвища співробітників тощо).
Звіт про помилку
Повідомлення про помилку може містити посилання на автоматичне формування звіту про помилку. Доступно як інтерактивне, і програмне формування звіту. Програмно можна додавати до звіту свої вкладення та об'єкти. Звіт про помилку можна зберегти на диск або надіслати до сервісу реєстрації помилок.
Сервіс реєстрації помилок
Сервіс реєстрації помилок - зовнішній по відношенню до платформи компонент, що є набір НТТР-сервісів з певними інтерфейсами. Він може бути реалізований за допомогою будь-якої відповідної технології. Наприклад, це може бути інформаційна база "1С:Підприємства" з набором HTTP-сервісів.
Перехоплення винятків у коді
Область застосування: керований додаток, мобільний додаток, звичайний додаток.
1. Не слід перехоплювати винятки, крім нижче. Необроблений виняток виводиться користувачеві, записується в журнал реєстрації для адміністратора і при необхідності відправляється в сервіс реєстрації помилок засобами платформи 1С:Підприємство.Для поширених винятків у платформі 1С:Підприємство передбачені категорії помилок та шаблони з відповідними повідомленнями та рекомендаціями. У сервіс реєстрації надсилаються помилки програмного коду, такі як "Значення не є значенням об'єктного типу", "Поле об'єкта не виявлено", "Занадто багато фактичних параметрів", "Помилка виклику методу контексту" та багато інших.
2. У ряді випадків технологічний текст виключення незрозумілий, тому його потрібно доповнити прикладною, зрозумілою користувачеві інформацією, типовими причинами або рекомендаціями щодо усунення проблеми, що виникла. До цієї категорії проблем належать, як правило, недоступність зовнішніх ресурсів і каналів зв'язку, некоректна робота зовнішніх сервісів, некоректні вхідні дані та некоректні налаштування зовнішніх додатків, що використовуються. Наприклад, це проблеми взаємодії з поштовими серверами, веб-сервісами, принтерами, криптопровайдерами.
2.1. У такому разі допустимо перехопити та прокинути виняток без втрати вихідного змісту з необхідним уточненням.
При цьому не слід відкривати великі блоки Спроби-Виключення, а розставляти їх локально на конкретні потенційно проблемні місця, виклики конкретних методів платформи, щоб унеможливити перехоплення інших незв'язаних помилок, наприклад, помилок сусіднього програмного коду.
Для перевірки виведення винятків користувачу рекомендується запускати 1С: Підприємство без налагодження та без режиму технічного спеціаліста, т.к. залежно від цього у платформі 1С:Підприємство зовнішній вигляд та поведінка вікна виключення різниться.
2.2.В особливих випадках може бути передбачена власна обробка винятків із розширеною діагностикою проблем, як, наприклад, у обробниках оновлення інформаційної бази.
У разі виняток не перевикликається, а обробляється. При цьому слідує:
- фільтрувати та надсилати помилки програмного коду в сервіс реєстрації помилок - див. ІнформаціяПро помилку. Є помилкою Категорії та Звіт про помилку. Надіслати;
- фіксувати причину помилки в журналі реєстрації для того, щоб системний адміністратор мав можливість виконати діагностику проблеми та за необхідності передати інформацію про помилку до служби технічної підтримки;
- записувати в журнал реєстрації докладне подання виключення, а повідомлення про помилку для користувача додавати в текст повідомлення - див. ОбробкаПомилок . ДетальнеПоданняПомилки та ОбробкаПомилок . ПовідомленняПроПомилкаДля Користувача , відповідно.
При цьому не слід:
- використовувати функцію ОписПомилки замість функції ОбробкаПомилок . Докладне Подання Помилки, т.к. вона неінформативна для розробника, тому що не повертає стек у тексті помилки;
- використовувати функцію ОбробкаПомилок. КороткеПоданняПомилки замість функції ОбробкаПомилок . ПовідомленняПомилкаДля Користувача , оскільки вона не повертає уточнень, доданих при прокиданні виключення.
Область застосування (уточнення): керований додаток, звичайний додаток.
3.1. Не слід аналізувати текст винятків із метою інтерпретації причини помилки. Текст виключення може змінюватись в залежності від локалізації версій платформи та конфігурації. Слід видавати користувачеві тексти винятків «як є».Для зрозумілості текст можна уточнити описом прикладної операції, а також доповнити поясненням можливих причин, якщо для категорії помилки в платформі не передбачено стандартне пояснення або його недостатньо.
Спроба
ЗавантажитиФайлІз Інтернету(. );
Виняток
ІнформаціяПро помилку = ІнформаціяПро помилку ();
Текст Повідомлення = Обробка Помилок.
Текст Повідомлення = НСтр("ua = 'Не вдалося завантажити файл класифікатора АУЦ:'")
+ Символи.ПС + Текст Повідомлення
+ Символи.ПС + НСтр("ru = 'Можливі причини:
| • Немає підключення до Інтернету;
| • На веб-сайті виникли проблеми;
| • Брандмауер або інше проміжне програмне забезпечення (антивіруси тощо) блокують спроби програми підключитися до Інтернету;
| • Підключення до Інтернету здійснюється через проксі-сервер, але його параметри не задані у програмі.'");
Для Адміністратора = Діагностика З'єднання С Інтернет (); // Докладне уявлення помилки для журналу реєстрації.
Викликати Виняток (Текст Повідомлення. Для Адміністратора, Інформація про помилку);
КінецьСпроби;
При використанні в конфігурації Бібліотеки стандартних підсистем (БСП) слід застосовувати функцію Загального Призначення Клієнт Сервер . Уточнення Винятки:
Спроба
ЗавантажитиФайлІз Інтернету(. );
Виняток
ІнформаціяПро помилку = ІнформаціяПро помилку ();
Уточнення = Загального призначенняКлієнтСервер.УточненняВиключення(ІнформаціяПро помилку,
НСтр("ru = 'Не вдалося завантажити файл класифікатора АУЦ:'"));
Уточнення.Текст = Уточнення.Текст + Символи.ПС + НСтр("ua = 'Можливі причини:
| • Немає підключення до Інтернету;
| • На веб-сайті виникли проблеми;
| • Брандмауер або інше проміжне програмне забезпечення (антивіруси тощо) блокують спроби програми підключитися до Інтернету;
| • Підключення до Інтернету здійснюється через проксі-сервер, але його параметри не задані у програмі.'");
Для Адміністратора = Діагностика З'єднання С Інтернет (); // Докладне уявлення помилки для журналу реєстрації.
Викликати Виняток(Уточнення.Текст, Уточнення.Категорія, Для Адміністратора, ІнформаціяПро помилку);
3.2. Неприпустимо перехоплювати будь-які винятки, безслідно для системного адміністратора:
Спроба
// код, що призводить до виклику виключення
.
Виняток // перехоплення будь-яких винятків
КінецьСпроби;
Як правило, подібна конструкція приховує реальну проблему, яку згодом неможливо діагностувати.
Правильно:
Спроба
// код, що призводить до виклику виключення
.
Виняток
// Пояснення причин перехоплення всіх винятків "непомітно" від користувача.
// .
// І запис події до журналу реєстрації для системного адміністратора.
ЗаписЖурналуРеєстрації(НСтр("ru = 'Виконання операції'"),
РівеньЖурналуРеєстрації.Помилка.
ОбробкаПомилок.ДетальнеПоданняПомилки(ІнформаціяПомилки()));
КінецьСпроби;
4. Порядок обробки винятків під час використання транзакцій описано у стандарті Транзакції: правила использования .