try-catch не работает с XMLHTTPRequest
Я пытаюсь использовать try-catch
операторы для обработки ошибок из XMLHTTPRequest
, как показано ниже:
var xhr = new XMLHttpRequest();
xhr.open('POST', someurl, true);
try{
xhr.sendMultipart(object);
}
catch(err){
error_handle_function();
}
когда была ошибка 401, вызванная xhr.sendMultipart
на error_handle_function
не называлась. Есть идеи, как это исправить?
спасибо!
2 ответов
Я думаю, что вы не можете поймать ошибки сервера таким образом. вместо этого вы должны проверить код состояния:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange=function() {
if (xhr.readyState === 4){ //if complete
if(xhr.status === 200){ //check if "OK" (200)
//success
} else {
error_handle_function(); //otherwise, some other code was returned
}
}
}
xhr.open('POST', someurl, true);
xhr.sendMultipart(object);
когда была ошибка 401, вызванная xhr.sendMultipart
Он не был брошен. Он был возвращен асинхронно.
это означает, что этот код завершает работу до получения ответа. Вот что такое true
в своем open
звонок.
вам необходимо зарегистрировать onReadyStateChange
обработчик и обработка ответов об ошибках.