错误处理-被全局错误处理捕获,却没有被组件错误处理捕获
当用户名输入错误的时候,直接进入了全局错误处理环节errorHandle,而没有进入组件中的catch(),不知怎么处理
const errorHandle = (ctx, next) => {
return next().catch((err) => {
if (401 == err.status) {
ctx.status = 401;
ctx.body = {
code:401,
msg:'Protected resource, use Authorization header to get access\n'
}
} else {
// 进入了这里
console.log('errorapp');
ctx.status = err.status || 500
ctx.body = {
code:500,
msg:err.message
}
}
})
}
//组件中方法
async submit(){
const isValid = await this.$refs.observer.validate()
if(!isValid){
return
}
login({
username: this.name,
password: this.password,
code: this.code,
sid: this.$store.state.sid
}).then(r => {
if(r.code == 200){
console.log(r);
}
}).catch(err => {
//没有被这里捕获
console.log('err',err);
})
}30
收起
正在回答
2回答
你问题解决了吗? 我当初的问题是, 在请求响应拦截器给了,
errorHandle(err), 这个函数什么也没做。 我的问题是因为这句,它走了这个错误,所以没有进入到catch, 你把这个注释掉就可以了。 // errorHandle(err)。
以下这样写,会报 typeError
const errorHandle = (err) => {
// console.log(err)
}
export default errorHandle
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星