我有一个方法可以检查文件系统(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块处理的,而是看起来像这样:
我尝试了什么:
FileNotFoundException
请注意,该方法需要保持异步,因为我在此方法中还有其他内容,我删除了这些内容以提供Minimal, Complete, and Verifiable example。
为什么在抛出FileNotFoundException
时调试器没有进入我的catch块?
答案 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可以帮助你。