web-dev-qa-db-fra.com

Comment attraper NetworkError en JavaScript?

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?

11
Synthead

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...
}
13
Rob M.

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:

 error.response object from Axios

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
}
1
Casper

Regardez dans le onreadystatechange event. Vous pouvez obtenir le statut de la réponse.

0
NaNpx