ChromeのJavaScriptコンソールで、これを実行すると:
var that = new XMLHttpRequest();
that.open('GET', 'http://this_is_a_bad_url.com', false);
that.send();
意図的に予期されるエラーが発生します。
NetworkError: A network error occurred.
これをキャッチしたいので、以下を使用します。
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.');
}
}
ただし、NetworkErrorが定義されていないというエラーが表示されます。
ReferenceError: NetworkError is not defined
NetworkErrorをキャッチするにはどうすればよいですか?
あなたが言ったのは:
if(exception.name == 'NetworkError'){
console.log('There was a network error.');
}
エラーがNetworkError
のインスタンスであるとは思いませんが、次のようにスローされます。
throw {
name: 'NetworkError',
message: 'A network error occurred.'
// etc...
}
Axiosの使用中に得たNetwork Error
を調べる方法を探しているときにこの答えを見つけたので、Axiosを使用している場合not、これは答えはおそらくではありません。
Axiosを介して受け取るエラーオブジェクトにはconfig
、request
、response
属性があり、request
とresponse
の両方にstatus
属性。 response
オブジェクトの属性が下の画像に表示されています:
私のaxios構成は次のようになります:
this.client = axios.create(options);
this.client.interceptors.response.use(this.handleSuccessResponse, this.handleErrorResponse);
this.unauthorizedCallback = () => {};
そしてhandleErrorResponse
メソッドは:
handleErrorResponse(error) {
// use the information from the error object here
}
onreadystatechange イベントを調べます。応答のステータスを取得できます。