javascript - Javascript 中的 try...catch 中出现异常

标签 javascript node.js exception fs

我在 Node 中有一个子例程,用于在正确的应用程序启动之前加载配置等。事实证明,如果找不到文件,则无法捕获异常并破坏应用程序。

相关代码:

const fs = require('fs');

class FileParser {
    static configure(filename) {
        let file;
        try {
            file = this.loadFileSync(filename);
        } catch (err) {
            console.log(`File ${filename} not found`);
        }

        // ...
    }

    static loadFileSync(filename) {
        fs.accessSync(filename, fs.F_OK);
        return fs.readFileSync(filename, 'utf8');
    }
}

如果找不到文件,fs.accessSync() 将抛出异常。很好,因为它可以保护 fs.readFileSync()。但我认为这个异常会通过调用函数向上传播并可以在那里被捕获 - 因此 configure() 中的 try...catch

我不想在 loadFileSync() 中解决异常,因为它在别处使用,调用 loadFileSync() 的函数将以不同方式处理异常。那么,什么是防止文件未找到和冒泡异常的正确方法?

最佳答案

试试这个:

const fs = require('fs');

class FileParser {
    static configure(filename) {
        let file;
        try {
            file = this.loadFileSync(filename);
        } catch (err) {
            console.log(`File ${filename} not found`);
        }

        // ...
    }

    static loadFileSync(filename) {
        try {
        fs.accessSync(filename, fs.F_OK);
        } catch(error) {
            throw(error);
        }
        return fs.readFileSync(filename, 'utf8');
    }
}

这可能会解决问题,您遇到此问题的原因可能是因为 accessSync 方法本身的实现。

关于javascript - Javascript 中的 try...catch 中出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42854417/

相关文章:

javascript - 重复函数导致模态标题

javascript - 使用 Dust.js 的异步自关闭助手

销毁 CComPtr 期间的异常

java - 什么是抑制异常?

javascript - 在javascript中检测损坏图像的方法?

javascript - 谷歌浏览器扩展 : create a window only once

node.js - 如何设置 cron 作业每 2 小时不同时间? [cron版本^1.1.0]

android - 在android中找不到列item_name

javascript - jquery 1.9.1 无法解析包含转义反斜杠的 JSON

node.js - 如何使用后端 Node js 在 Api.ai 中制作用于槽填充的 Webhook