我想在我的一个服务失败时向客户端返回正确的 HTTP 状态代码。让我们假设我们有一个简单的快速应用,其中服务是从控制器调用的。该服务可能由于多种原因而失败,例如无效的用户ID,代码中的某些错误或仅仅是因为不存在具有给定ID的用户。要返回正确的HTTP状态代码(分别为400,500和404),当我从服务中抛出它时,我需要以某种方式将其附加到错误中。我该怎么做,是否有任何最佳实践?还是我完全误解了什么?getUserById(userId) {...}到目前为止,我只是像这样完成:throw { message: 'No user with this ID exists', status: 404 }然而,我确实觉得这不是很好的可维护性,因为人们应该只抛出标准错误。
1 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
您可以创建一个错误对象,然后只向其添加自定义属性。
let err = new Error('No user with this ID exists');
err.status = 404;
throw err;
或者,我经常将其封装在函数中:
function error(msg, status = 500) {
let err = new Error('No user with this ID exists');
err.status = status;
throw err;
}
或者,您可以创建自己的错误子类
class MyError extends Error {
constructor(msg, status = 500) {
super(msg);
this.status = status;
}
}
然后使用它:
throw new MyError('No user with this ID exists', 404);
添加回答
举报
0/150
提交
取消