node.js - 如何将错误从函数传递到 catch 块
问题描述
我写了一个简单的路线来执行两个数字的加法。
import express from 'express';
import { isNumber } from 'util';
const router = express.Router();
// handles url http://localhost:8082/api/sum
router.get('/sum', async (req, res) => {
try {
const a = req.query.a; // 1
const b = req.query.b; // g
const result = await checkForNumber(a, b);
return res.status(200).json({
message: 'Sum',
sum: result,
});
} catch (err) {
return res.status(422).json({
Error,
});
};
});
function checkForNumber(a, b) {
if (isNumber(a) || isNumber(b)) {
return a + b;
}
return new Error('NAN');
};
如何从 catch 块中的函数中获取错误?
因为现在我得到一个空对象。
{
"message": "Sum",
"sum": {}
}
如果变量不是数字,我需要进入 catch 块并向用户发送错误。
{
"Error": "NAN"
}
我在库文档express.js中阅读了有关错误的信息,但是如何从我无法理解的函数中传递错误。
解决方案
你需要打电话throw new Error('NAN');
而不是return new Error('NAN');
此外,错误处理程序应如下所示:
return res.status(422).json({
Error: err.message
});
推荐阅读
- c++ - 使用 fdopen 的正确方法
- vb.net - 当输入的大小可能发生变化时如何修改文本文件的一部分
- blueprism - 无法加载无法识别的应用程序类型浏览器启动
- tcp - Sim7080G 模块在使用 GNSS 时无法通过 TCP 发送数据
- windows - windows/delphi 中的 Alpha 3 语言扩展从哪里获取?
- swift - 如何快速删除滚动视图侧边栏
- c - 哪种方法更适合在 C 中的循环中递增和遍历
- java - 调用 CRUD 存储库时 Spring AutoWire 不起作用
- python - 将 python 脚本与 HTML 输入页面链接
- python - 为什么单独线程中的“face_recognition”包会减慢 UI 线程?