Обработка ошибок
Описан алгоритм формирования краткого и подробного представления ошибок в BAS, условия показа соответствующих кнопок, поведение клиентов и коды ошибок веб-подключения.
При формировании текста сообщения об ошибке используется следующий алгоритм:
- Из цепочки исключений извлекается самое вложенное исключение, то есть самое первое исключение.
Текст описания самого первого исключения используется для краткого представления ошибки:
- для ошибок компиляции модулей в краткое представление включается текст, связанный с местом возникновения ошибки (строкой в модуле);
- для краткого представления ошибок времени выполнения используется текст без подробностей о месте возникновения ошибки (строке в модуле).
Краткое представление ошибки отображается в диалоге, выводимом пользователю. В этом диалоге может быть кнопка Подробно..., если выполняются следующие условия:
- включен режим отладки;
- это ошибка встроенного языка;
- в цепочке имеется более одного исключения.
- Подробное представление ошибки формируется из описаний всех исключений в цепочке.
Если диалог ошибки не содержит кнопки Подробно..., а ошибка является критической (работу программы невозможно продолжить), в этом диалоге будет гиперссылка Показать информацию для технической поддержки.
После нажатия кнопки Подробно... открывается дополнительное окно с подробным представлением ошибки и дополнительной кнопкой Конфигуратор..., если в диалоге отображается ошибка встроенного языка.
При работе тонкого клиента или веб-клиента в клиент-серверном варианте обрабатываются следующие ошибочные ситуации:
- Если в начале работы системы обнаружена установленная блокировка соединений с информационной базой, появляется сообщение об ошибке с возможностью повторить соединение.
- При несовпадении версий сервера и клиентского прикладного приложения отображается сообщение об ошибке с возможностью выполнить перезагрузку.
При отсутствии прав на запуск тонкого клиента поведение зависит от использования ключа запуска -AppAutoCheckMode:
- если команда была указана при запуске, автоматически выполняется попытка запуска толстого клиента;
- если команда не была указана при запуске, отображается окно с сообщением об ошибке без возможности перезапуска.
- При невозможности соединения с сервером BAF (или веб-сервером) для запросов, которые можно отправить повторно, и для запросов, выполняемых до начала сеанса, отображается сообщение об ошибке с возможностью повторить запрос или отказаться от попытки. При отмене повтора запроса программа не завершает работу. Если запрос невозможно отправить повторно, отображается окно с сообщением об ошибке и возможностью выполнить перезагрузку.
- Если ошибка произошла при обработке запроса на сервере, отображается окно с сообщением об ошибке и возможностью выполнить перезагрузку.
- При ошибке работы с сеансом, например если сеанс был удален администратором, отображается окно с сообщением об ошибке и предоставляется возможность выполнить перезагрузку.
При возникновении внутренней ошибки платформы веб-клиент формирует ошибку следующего вида: Неизвестная ошибка: <описание ошибки>.
Если для подключения к информационной базе используется веб-клиент или тонкий клиент, подключенный через веб-сервер, то при возникновении нештатных ситуаций используются следующие коды ошибок:
- 400 Bad Request – описывает ошибки прикладного решения, не имеющие критических последствий для работы клиентского прикладного приложения, в частности все исключения времени выполнения. Нельзя перехватывать для отображения пользователю.
500 Internal Server Error – описывает ошибки прикладного решения, имеющие критические последствия для клиентского прикладного приложения, например:
- невосстанавливаемые исключения базы данных;
- исключения, связанные с удалением сеанса или отсутствием данных сеанса.
- 502 Bad gateway – описывает ошибки кластера серверов или регламентных операций, имеющие критические последствия для прикладного приложения, например если невозможно установить соединение с сервером BAF.
- 503 Service Unavailable – описывает ошибки кластера серверов или регламентных операций, имеющие критические последствия для клиентского прикладного приложения, например если невозможно установить соединение с сервером баз данных.
Внимание!
Для сохранения работоспособности системы не следует перехватывать ошибки с кодом 400. Ошибки с кодами 50x можно перехватывать для отображения более понятного сообщения об ошибке.