当前位置: 首页 > 知识库问答 >
问题:

将api控制器中的尝试捕获块外包到一个点

鱼志学
2023-03-14

我的控制器中的每个操作都具有相同的try-catch块:

  try {
    ...
  } catch (error) {
    return response.json({ message: error.message });
  }

我不想在每个控制器动作中重复它。

如何将try-catch块放在一个点上,使其在整个项目中不重复?

谢谢!

共有1个答案

楚建柏
2023-03-14

您可以使用这样的高阶函数:

const handleError = func => (request, response, next) => {
  try {
    func(request, response, next)
  } catch (error) {
    return response.json({ message: error.message });
  }
}

然后在路线中与控制器一起使用,如下所示:

app.get("/whatever", handleError(myController))
app.get("/anotherRoute", handleError(anotherController))

控制器将只包含示例中的

 类似资料:
  • 问题内容: 我只是在学习Java异常处理和Java。我制作了一个Swing GUI,用户将在两个字段中输入整数,然后单击带有算术函数的单选按钮,答案将出现在第三个文本字段中。我想包含一个try / catch块,以在用户将前两个字段之一留为空白或输入除整数以外的内容时捕获异常,以及如果用户尝试将其除以零则输入第二个catch。该窗体可以正常工作,但是不会捕获错误,只能返回堆栈跟踪并使程序崩溃。我感

  • 有没有一种简单的方法可以将URL中的多个参数打包到一个单元中,并将其发送到Spring MVC控制器? 此外,我们如何处理不同数量的参数,例如,如果我有一些信息列表的大小不同?

  • 我正试图从这个js发布我的数据 有什么建议如何修复它吗? 堆栈跟踪:

  • 我想运行几行代码,但我不确定是否有任何行会抛出错误。但是如果发生错误,我希望脚本忽略该行并继续。 一种选择是使用<code>try-catch-end TL;TR:除了为下面示例代码中的每一行编写<code>try-catch-end 示例代码: 输出: 首选输出: 相关:为什么我不应该在“try”-“catch”中包装每个块?

  • 考虑下面的控制器方法, 假设上面endpoint的响应对象如下所示, 现在我试图实现的是将整个响应对象包装在另一个对象下,因此最终响应应该看起来像, 所以问题是,我不想在每个控制器方法下创建一个函数来向这个包装器对象发送值。我的问题是,在Spring框架中是否有可能允许我在某个地方创建一个全局包装器函数,它会自动选择它并包装来自控制器的响应?

  • 问题内容: 我知道我可以做到: 我也可以这样做: 但是,如果我想在两个不同的异常中做同样的事情,那么我现在想到的最好的方法就是: 有什么办法可以做这样的事情(因为在两个异常中都采取的措施是): 现在,这确实不起作用,因为它与以下语法匹配: 因此,我捕捉两个截然不同的异常的努力并未完全实现。 有没有办法做到这一点? 问题答案: 例如,子句可以将多个异常命名为带括号的元组。 或者,仅对于Python