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