Typescript 函数返回另一个函数时的错误处理';承诺
我对ES6承诺非常陌生,我想知道以下情况下的错误处理:Typescript 函数返回另一个函数时的错误处理';承诺,typescript,error-handling,es6-promise,Typescript,Error Handling,Es6 Promise,我对ES6承诺非常陌生,我想知道以下情况下的错误处理: // Base function private async someFunction(...): Promise<T> { // returns Promise<T> } public async anotherFunction(...): Promise<T> { try { // stuff return someFunction(...);
// Base function
private async someFunction(...): Promise<T> {
// returns Promise<T>
}
public async anotherFunction(...): Promise<T> {
try {
// stuff
return someFunction(...);
} catch (error) {
return Promise.reject(error);
}
}
//基函数
私有异步someFunction(…):承诺{
//回报承诺
}
公共异步另一个函数(…):承诺{
试一试{
//东西
返回someFunction(…);
}捕获(错误){
返回承诺。拒绝(错误);
}
}
anotherFunction
返回带有各种参数的someFunction
。我的问题是,这里的try/catch是否足以处理someFunction
抛出的错误?或者我应该执行returnsomefunction(…).catch(err=>…)
还是这完全是一种糟糕的做法
谢谢这行不通
try{
Promise.resolve(1)
.then(() => {
throw new Error('111');
});
} catch (e) {
console.log(e);
}
try{
Promise.resolve(1)
.then(() => {
return Promise.reject('something is wrong');
});
} catch (e) {
console.log(e);
}
这是行不通的
try{
Promise.resolve(1)
.then(() => {
throw new Error('111');
});
} catch (e) {
console.log(e);
}
try{
Promise.resolve(1)
.then(() => {
return Promise.reject('something is wrong');
});
} catch (e) {
console.log(e);
}
但这是可行的
Promise.resolve(1)
.then(() => {
try{
throw new Error('Something is wrong...');
} catch (e) {
return Promise.reject(e.message);
}
})
.catch((reason) => {
console.log(reason);
});
try/catch块将无法处理错误,因为错误正在异步执行中。所以你需要抓住它。