要捕捉由express.json()
中间件抛出的错误,可以使用try-catch
语句来捕获并处理错误。以下是一个包含代码示例的解决方法:
const express = require('express');
const app = express();
app.use(express.json());
app.post('/api/data', (req, res) => {
try {
// 在这里处理请求的数据
res.sendStatus(200);
} catch (error) {
if (error instanceof SyntaxError && error.status === 400 && 'body' in error) {
// 如果JSON格式不正确,则在这里处理错误
res.status(400).send('Invalid JSON');
} else {
// 处理其他类型的错误
res.status(500).send('Internal Server Error');
}
}
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
在上面的代码中,我们使用try-catch
语句来捕获express.json()
中间件抛出的错误。如果捕获到的错误是SyntaxError
且status
为400并且包含body
属性,则表示JSON格式不正确。我们可以在这里处理错误并返回一个适当的错误响应。如果捕获到的错误不是JSON解析错误,则可以在else
语句块中处理其他类型的错误。