【发布时间】:2020-09-06 08:53:57
【问题描述】:
我编写了一些代码来读取文件并遇到了 try-catch 块的问题。
在 mscorlib.dll 中发生了“System.IO.DirectoryNotFoundException”类型的第一次机会异常
附加信息:找不到路径“D:...\WpfApplicationExample\bin\Debug\KeyWord\ROS\KeyWord_Booting_Time.json”的一部分。
虽然我已经处理过了,但我总是遇到这个异常。
我的目录肯定不存在,但我已经通过catch 块处理它,所以为什么我的应用程序仍然在此崩溃:StreamReader sr = new StreamReader(filePath)。
请看看下面的代码,告诉我有什么问题?
try
{
StreamReader sr = new StreamReader(filePath);
jsonString = sr.ReadToEnd();
sr.Close();
}
catch (System.IO.DirectoryNotFoundException e)
{
Log.log(TAG, "getKeyWords", e.Message);
}
catch (System.IO.IOException e)
{
Log.log(TAG, "getKeyWords", e.Message);
}
catch (Exception e)
{
Log.log(TAG, "getKeyWords", e.Message);
}
【问题讨论】:
-
如果您在每个 catch 块中执行相同的操作,那么捕获 2 种特定类型的异常 + 捕获所有异常当然没有意义!
-
请注意“第一次机会”语言。也许您正在调试并启用了第一次机会异常:stackoverflow.com/questions/564681/…
-
你确定它会抛出 System.IO.DirectoryNotFoundException 吗?我认为,当 filePath 不存在时,StreamReader 会抛出 System.IO.FileNotFoundException
-
感谢@Simon Mourier 提供的信息,我现在明白了。
-
@TrịnhVũLong - 如果您找到了解决方案,请回答自己以结束问题并获得积分
标签: c# exception ioexception