try-catch не работает с XMLHTTPRequest
Я пытаюсь использовать инструкции try-catch
для обработки ошибок из XMLHTTPRequest
, как 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
не была вызвана. Любая идея, как это исправить?
Благодарю!
Ответы
Ответ 1
Я думаю, что вы не можете поймать серверные ошибки таким образом. вы должны проверить код состояния:
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);
Ответ 2
Когда была ошибка 401, брошенная xhr.sendMultipart
Это не было брошено. Он был возвращен асинхронно.
Это означает, что этот код заканчивается до того, как будет получен ответ. Это то, что означает true
в вашем open
вызове.
Вам нужно зарегистрировать обработчик onReadyStateChange
и обрабатывать ответы об ошибках.