在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?
答案 0 :(得分:13)
我认为你的意思是:
if(exception.name == 'NetworkError'){
console.log('There was a network error.');
}
我不相信错误是NetworkError
的一个实例,但是以这种方式抛出:
throw {
name: 'NetworkError',
message: 'A network error occurred.'
// etc...
}
答案 1 :(得分:2)
我在寻找一种方法来检查使用Axios时得到的Network Error
时找到了这个答案,因此,如果您不是使用Axios,则此答案可能是 not < / em>为您。
我通过Axios接收到的错误对象具有config
,request
和response
属性,而request
和response
都具有{{1} }属性。 status
对象的属性显示在下图中:
我的axios配置如下:
response
和this.client = axios.create(options);
this.client.interceptors.response.use(this.handleSuccessResponse, this.handleErrorResponse);
this.unauthorizedCallback = () => {};
方法是:
handleErrorResponse
答案 2 :(得分:0)
查看onreadystatechange事件。您可以获得响应的状态。
答案 3 :(得分:0)
exception.name
即使在发生网络错误时也返回“错误”
更好的方法是检查错误是否具有如下的url配置:
if(exception.config && exception.config.url){
// network error
} else {
// other errors
}