FileNotFoundException,但未输入catch块(异步方法)

时间:2016-10-21 07:06:34

标签: c# exception asynchronous exception-handling uwp

我有一个方法可以检查文件系统(UWP)中是否存在文件:

private async Task<bool> FileExistsAsync(string filename)
    {
        try
        {
            if (filename != null)
            {
                var item = await StorageFile.GetFileFromPathAsync(filename); // FileNotFoundException happens here
                if (item != null)
                    return true;
            }
            return false;
        }
        catch (Exception e) // I Expect the debugger to handle the FileNotFoundException here, but it never happens
        {
            return false;
        }
    }

当我尝试使用StorageFile.GetFileFromPathAsync获取不存在的文件时,我得到一个例外。由于某些原因,它不是由我的catch块处理的,而是看起来像这样:

enter image description here

我尝试了什么

  • 明确处理FileNotFoundException
  • 在if-statement
  • 中添加Try-catch-block

请注意,该方法需要保持异步,因为我在此方法中还有其他内容,我删除了这些内容以提供Minimal, Complete, and Verifiable example

为什么在抛出FileNotFoundException时调试器没有进入我的catch块?

2 个答案:

答案 0 :(得分:3)

在Exception Popup中,我看到[x] Break when this exception type is thrown。尝试在那里禁用它,或从“异常设置”对话框(我的系统上的Ctrl-Alt-E,或菜单Debug&gt; Windows&gt; Exception Settings)。

答案 1 :(得分:0)

 var item = await StorageFile.GetFileFromPathAsync(filename); 

你有没有尝试过捕捉这个功能?如果是,请添加

throw 

in catch

试试这个:Why can't I catch an exception from async code? 而这:Catch an exception thrown by an async method可以帮助你。