You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在非API的普通函数中触发错误处理而无需传递next参数?

实现方案

直接在normalFunction的catch块中使用throw抛出捕获到的错误即可,上层路由处理函数的try/catch结构会自动捕获该错误,随后触发next(err)执行公共错误处理逻辑,无需将next作为参数传入普通函数。

修改后代码示例

const xxx = async (req, res, next) => {
  try {
    // 若normalFunction是异步函数,必须加await才能捕获到抛出的错误
    normalFunction(data);
  } catch (err) {
    next(err);
  }
};

function normalFunction(data) {
  try {
    // 此处写业务逻辑代码
  } catch (e) {
    // 直接抛出捕获到的错误
    throw e;
    // 也支持封装自定义错误后抛出,例如:
    // const customError = new Error('参数校验失败:' + e.message)
    // customError.code = 400
    // throw customError
  }
}

注意事项

  • 如果normalFunction为异步函数,上层调用时必须添加await关键字,否则抛出的错误会变为未捕获的Promise拒绝,无法被外层try/catch捕获。
  • 抛出错误前可自行封装错误的附加信息(如错误码、错误分类标识等),方便公共错误处理逻辑做差异化处理。

内容的提问来源于stack exchange,提问作者abdul fasith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:06:01