处理Node js中的多个错误

路西法晨星

我在Node JS中有一个方法,该方法读取包含JSON数据的文件并查找具有特定ID的产品。

async getProductwithId(id) {
        try {
            let rawData = fs.readFileSync("data/products.json");
            let data = JSON.parse(rawData);
            for (const element of data) {
                if (id === element.productId) {
                    return element;
                }
            }
            throw new ProductDoesNotExistError("No Such Product Exists");
        } catch (error) {
            throw new FileReadingError("Error Reading File");
        }
    }

其中ProductDoesNotExistError和FileReadingError都扩展了Error。我已经为fs.readFileSync()尝试/捕获了

问题是即使我有ProductDoesNotExistError,它也会发送FileReadingError。我只想在这里处理FileReadingError而不是ProductDoesNotExistError。我将让callling函数处理ProductDoesNotExistError。如何实现此功能。

EOL

由于在catch块中引发的新实例FileReadingError,因此所有捕获的错误都会导致后者。您可以将其放在操作try/catch周围,也可以readFileSync在catch块中检查错误的类型(也不需要,async因为方法中的代码不是异步的-例如,您未使用fs.promises.readFile()):

getProductwithId(id) {
    let rawData;
    try {
        rawData = fs.readFileSync("data/products.json");
    } catch (error) {
        throw new FileReadingError("Error Reading File");
    }
    const data = JSON.parse(rawData);
    for (const element of data) {
        if (id === element.productId) {
            return element;
        }
    }
    throw new ProductDoesNotExistError("No Such Product Exists");
}

或者你这样做:

getProductwithId(id) {
    try {
        const rawData = fs.readFileSync("data/products.json");
        const data = JSON.parse(rawData);
        for (const element of data) {
            if (id === element.productId) {
                return element;
            }
        }
        throw new ProductDoesNotExistError("No Such Product Exists");
    } catch (error) {
        if (error instanceof ProductDoesNotExistError) {
            // rethrow ProductDoesNotExistError error
            throw error;
        }
        throw new FileReadingError("Error Reading File");
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

node.js 中未处理的错误

来自分类Dev

如何在node.js中处理多个imap连接?

来自分类Dev

在node.js中处理多个子进程

来自分类Dev

Node.js中管道中未处理的流错误

来自分类Dev

使用Promise处理Node.js + Express中的错误

来自分类Dev

在Node.js中的yEnc上的错误处理

来自分类Dev

处理在node.js中记录的错误和异常

来自分类Dev

承诺中的 Node.js mysql 错误处理

来自分类Dev

如何处理 node.js 请求中的 URI 错误?

来自分类Dev

Node.js Express处理错误功能

来自分类Dev

Node.js中的处理程序响应

来自分类Dev

在Node.js中批处理

来自分类Dev

Node.js中的处理程序响应

来自分类Dev

node.js中的TCP流处理

来自分类Dev

在Node.js中处理图像

来自分类Dev

Node.js无法处理多个TCP消息

来自分类Dev

Alexa Node JS 如何处理多个事件的取消事件

来自分类Dev

示例Node.js执行表单处理和处理-在Node.js中

来自分类Dev

Node.js-如何处理流错误事件

来自分类常见问题

使用node.js流进行错误处理

来自分类Dev

Node.js抛出未处理的错误事件

来自分类Dev

node.js-处理不同类型的错误时出错

来自分类Dev

node.js-处理TCP套接字错误ECONNREFUSED

来自分类Dev

用Express在Node JS中进行简单的错误处理?

来自分类Dev

Node.js抛出未处理的错误事件

来自分类Dev

Node.js教程,Http Server处理错误

来自分类Dev

Node.js错误处理以检查属性值

来自分类Dev

使用 socket.emit 处理 Node.js 错误

来自分类Dev

在 Node.js 中使用 try..catch 处理错误