gpt4 book ai didi

javascript - express : Specify HTTP status code when throwing error in service

转载 作者:行者123 更新时间:2023-12-03 08:19:03 24 4
gpt4 key购买 nike

当我的一项服务失败时,我想将正确的HTTP状态代码返回给客户端。

假设我们有一个简单的Express应用,其中从 Controller 调用了服务getUserById(userId) {...}。该服务可能由于多种原因而失败,例如无效的用户ID,代码中的某些错误,或者仅仅是因为不存在具有给定ID的用户。
要返回正确的HTTP状态代码(分别为400、500和404),当我将其从服务中抛出时,我将需要以某种方式将其附加到错误中。我该怎么做?有没有最佳做法?还是我完全误解了某件事?

到目前为止,我只是这样完成:
throw { message: 'No user with this ID exists', status: 404 }
但是,考虑到一个should only throw standard errors,我确实觉得这不太容易维护。

最佳答案

您可以创建一个错误对象,然后向其添加自定义属性。

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;
}

或者,您可以创建自己的Error子类
class MyError extends Error {
constructor(msg, status = 500) {
super(msg);
this.status = status;
}
}

然后使用它:
throw new MyError('No user with this ID exists', 404);

关于javascript - express : Specify HTTP status code when throwing error in service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61828539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com