动臂-引发错误并以错误作为响应的差异

时间:2018-08-10 13:05:08

标签: javascript node.js error-handling try-catch hapijs

这是关于boom的信息,它是Hapijs的插件

这是要引发错误的功能

->Request started

->http-loading-indicator.service.ts:24 GET "http://localhost:8080/api/film"
            in 2164 ms.

这就是我在另一个文件中使用它的方式

const errorThrower = (msg = 'Internal Server Error', errorCode = 500) => {
  const error = new Error(msg);
  error.httpStatusCode = errorCode;
  throw error;
};

现在,这将导致try { ... errorThrower('Invalid client id for partner', 404); ... } catch (error) { return boom.boomify(error, { statusCode: error.statusCode, }); } ,而我希望Boom产生500 Internal Server Error。日志指示控制台上的错误,这显然意味着未捕获到该错误。

我要去哪里错了?

1 个答案:

答案 0 :(得分:0)

哦,这很快。

因此,没有像error.statusCode这样的内置属性,而是我在error.httpStatusCode函数中设置的errorThrower

这就是为什么boom假设500,因为我没有提供有效的statusCodeerror.statusCode未定义)的原因。

要引用boom

  

statusCode-HTTP状态代码。如果尚未设置状态代码并且err不是Boom对象,则默认为500。

这是正确的错误响应的唯一必要更改:

return boom.boomify(error,
  {
    statusCode: error.statusCode,
  });

也可以创建一个Boom对象...