首页 > 解决方案 > 如何将错误从函数传递到 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中阅读了有关错误的信息,但是如何从我无法理解的函数中传递错误。

标签: node.jsexpress

解决方案


你需要打电话throw new Error('NAN');而不是return new Error('NAN');

此外,错误处理程序应如下所示:

return res.status(422).json({
  Error: err.message
});

推荐阅读