Bluebird 中的捕获错误类型不起作用
Catch Error Type in Bluebird Not Working
我有一个自定义错误 class:
class NetworkError extends Error {
constructor() {
super('Network Error');
this.name = 'NetworkError';
}
}
而我想具体处理一下:
import {NetworkError} from '../../common/errors';
someFunc().catch(NetworkError, err => {
// this is missed
}).catch(err => {
// this is hit
});
但它跳过了我的自定义捕获并命中了一般捕获。如果我这样改变它,它会起作用:
someFunc().catch({name: 'NetworkError'}, err => {
// this is hit
}).catch(err => {
// this is missed
});
显然首选第一种方式。我在这里错过了什么?
正如@loganfsmyth 在问题评论中所建议的那样,这是 Babel 的限制。这个答案可以解决问题:
我有一个自定义错误 class:
class NetworkError extends Error {
constructor() {
super('Network Error');
this.name = 'NetworkError';
}
}
而我想具体处理一下:
import {NetworkError} from '../../common/errors';
someFunc().catch(NetworkError, err => {
// this is missed
}).catch(err => {
// this is hit
});
但它跳过了我的自定义捕获并命中了一般捕获。如果我这样改变它,它会起作用:
someFunc().catch({name: 'NetworkError'}, err => {
// this is hit
}).catch(err => {
// this is missed
});
显然首选第一种方式。我在这里错过了什么?
正如@loganfsmyth 在问题评论中所建议的那样,这是 Babel 的限制。这个答案可以解决问题: