为什么“失败”的承诺没有发现错误?

时间:2012-05-14 07:19:26

标签: javascript windows-runtime promise winjs

我正在尝试访问可能不存在的文件:

var localFolder = Windows.Storage.ApplicationData.current.localFolder;

localFolder.getFileAsync(stateFile).then(function (file) {
            Windows.Storage.FileIO.readTextAsync(file).then(function (text) {
        // do something with the text

    });
}, function (err) {
    // log error, load dummy data

});

如果文件不存在,则会调用“fail”方法,但是只有在我的应用程序暂停并且“找不到文件”之后才会发生。只有当我按下“继续”调试器时才会继续“失败”方法..

我在做错了什么?我应该事先检查存在吗?

2 个答案:

答案 0 :(得分:2)

你看到了第一次机会异常。调试器在抛出点处破坏。如果按下调试器对话框上的“继续”按钮,应用程序将继续运行,异常处理程序将运行。

您可以使用“调试|例外”菜单更改此功能,以关闭第一次机会异常。

答案 1 :(得分:1)

我一直在努力解决这个问题两三天,最后得出以下解决方案:我使用getFilesAsync函数获取文件夹中所有文件的列表,然后查看此列表以了解是否需要文件已存在。之后我可以在不抛出的情况下调用getFileAsyns。不是很漂亮,但适合我。我同意假设开发人员可以关闭异常并不是最好的建议......在我看来,这个问题应该被视为RT实现中的一个错误。