为什么这个 Azure 时间触发函数不会失败?

Why won't this Azure time triggered function fail?

我想知道为什么我的函数会成功,即使我故意在函数内部抛出异常。我创建了一个新的计时器函数,我所做的只是添加了一个 try/catch 块和一个总是抛出的错误:

module.exports = async function (context, myTimer) {
  try {
    if (myTimer.isPastDue) {
      context.log('Node is running late!');
    }
    context.log('TEST');
    throw 'Error occurred';
  } catch (err) {
    context.log(err);
  }
};

将上述函数部署到 Azure 并手动触发后,将导致函数执行成功并且日志显示 'TEST' 而不是 'Node is running late!':

2022-04-08T13:32:30Z   [Information]   TEST
2022-04-08T13:32:30Z   [Information]   Executed 'Functions.TEST' (Succeeded, Id=..., Duration=36ms)

docs 只声明我应该在函数的最高级别使用 try/catch。我找不到任何关于为什么这个函数会成功但在执行过程中发生错误的信息。

任何帮助将不胜感激,非常感谢!

它不会因为您正在捕获错误而失败,这意味着它不会浮出水面,它希望您主动决定要做什么,记录并重新抛出异常是一种选择,仅记录是另一种它真的取决于您的业​​务需求。

您需要移除 try/catch 方块或在您的捕获物中添加类似于此的投掷物

catch (err) {
    context.log(err);
throw;
  }