Dans la console JavaScript de Chrome, si j'exécute ceci:
var that = new XMLHttpRequest();
that.open('GET', 'http://this_is_a_bad_url.com', false);
that.send();
Je reçois une erreur intentionnellement attendue:
NetworkError: A network error occurred.
Je veux attraper cela, alors j'utilise:
var that = new XMLHttpRequest();
that.open('GET', 'http://this_is_a_bad_url.com', false);
try {
that.send();
} catch(exception) {
if(exception instanceof NetworkError) {
console.log('There was a network error.');
}
}
Cependant, j'obtiens une erreur à propos de la non-définition de NetworkError:
ReferenceError: NetworkError is not defined
Comment puis-je attraper NetworkError?
Je pense que ce que vous vouliez dire était:
if(exception.name == 'NetworkError'){
console.log('There was a network error.');
}
Je ne crois pas que l'erreur soit une instance de NetworkError
, mais jeté de cette manière:
throw {
name: 'NetworkError',
message: 'A network error occurred.'
// etc...
}
J'ai trouvé cette réponse en cherchant un moyen d'examiner un Network Error
obtenu en utilisant Axios. Par conséquent, si vous utilisez not en utilisant Axios, cette réponse est probablement not pour vous.
L'objet d'erreur que je reçois via Axios a les attributs config
, request
et response
et les deux variables request
et response
possèdent l'attribut status
. L'attribut de l'objet response
est affiché dans l'image ci-dessous:
Ma configuration axios ressemble à ceci:
this.client = axios.create(options);
this.client.interceptors.response.use(this.handleSuccessResponse, this.handleErrorResponse);
this.unauthorizedCallback = () => {};
et la méthode handleErrorResponse
est:
handleErrorResponse(error) {
// use the information from the error object here
}
Regardez dans le onreadystatechange event. Vous pouvez obtenir le statut de la réponse.