Typescript 函数返回另一个函数时的错误处理';承诺

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(...);

我对ES6承诺非常陌生,我想知道以下情况下的错误处理:

// 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块将无法处理错误,因为错误正在异步执行中。所以你需要抓住它。