К моменту: как бы вы обрабатывали ошибки HTTP 4nn/5nn на стороне сервера в jQuery-запросах ajax? Этот случай касается веб-приложения JSP/Servlet на стороне сервера. Здесь я не говорю о тривиальных исключениях времени выполнения, таких как NullPointerException
и т.д. Предположим, что все они отлично обработаны. Хорошим примером такой ошибки HTTP 4nn/5nn является 401 несанкционированный (недостаточные права пользователя) и 500 внутренних ошибок сервера (сбой базы данных, ошибка ввода-вывода, Error
и т.д.). Предположим, что они не могут (или не должны) быть пойманы на уровне кодирования.
Сейчас я только что объявил <error-page>
в web.xml
для таких ошибок. Он в основном перенаправляет запрос на предварительно определенную страницу ошибок JSP/HTML, в которой конечный пользователь получает сообщение о серьезной ошибке и что пользователь может связаться с [email protected] для дальнейшей помощи. На этой же странице отображаются общие сведения об ошибке/исключении.
Он отлично работает в обычных HTTP-запросах, но как бы вы обрабатывали его в запросах XMLHtttp с использованием jQuery? Что лучше всего подходит для пользователей? Для меня это будет просто отображение всей страницы ошибки, как будто это обычный HTTP-запрос. Я решил это следующим образом:
function init() {
$.ajaxSetup({
error: handleXhrError
});
}
function handleXhrError(xhr) {
document.open();
document.write(xhr.responseText);
document.close();
}
Несмотря на то, что он работает отлично, мне кажется, что он взломан. Замена всего документа на содержимое страницы ошибок HTTP. Но так же, как вы будете следовать? Если нет, можете ли вы, может быть, уточнить, почему бы и нет, и как бы вы предпочли? Единственная альтернатива, которую я вижу, - это использование JS для отображения некоторого окна предупреждения/сообщения, чтобы информировать пользователя о неразрешимой ошибке, но пользователь может отклонить его и продолжить страницу, пока это невозможно.