Nuw*_*ana 1 exception node.js express
我创建了nodejs + Express应用程序。现在在我的应用程序中,当异常捕获错误时发送如下
app.get('/data', (req, res) => {
if(!req.params.token){
return res.status(403).send('Access token not provided');
}
//do something here
});
Run Code Online (Sandbox Code Playgroud)
而不是发送res.status(403).send('未提供访问令牌'); 我可以发送这样的东西吗
异常.js
class Forbidden {
constructor(message,stack = null){
this.code = 403;
this.message = message
this.stack = stack;
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序.js
var httpForbidden = require('exception.js');
app.get('/data', (req, res) => {
if(!req.params.token){
return new httpForbidden ('Access token not provided');
}
//do something here
});
Run Code Online (Sandbox Code Playgroud)
我怎样才能在一个地方捕获所有异常?
你可以使用这样的东西:
class httpError {}
class httpForbidden extends httpError {
constructor(message, stack = null) {
super();
this.code = 403;
this.message = message
this.stack = stack;
}
}
app.get('/', (req, res) => {
if (!req.params.token) {
throw new httpForbidden('Access token not provided');
}
...
});
app.use((err, req, res, next) => {
if (err instanceof httpError) {
return res.status(err.code).send(err.message);
}
res.sendStatus(500);
});
Run Code Online (Sandbox Code Playgroud)
这使用 Express错误处理中间件,该中间件将检查抛出的错误是否是一个实例httpError
(这将是您想要创建的所有 HTTP 错误类的超类),如果是,将生成一个特定的响应根据代码和消息(或否则生成通用 500 错误响应)。