【发布时间】:2014-01-16 19:22:32
【问题描述】:
最近我遇到了一个我没有预料到的异常,因为 MSDN 中没有记录它可以由特定的构造函数抛出。所以这里是抛出异常的 C# 行:
using (StreamReader sr = new StreamReader(filePath))
filePath 这里是应该包含某个文件的完整路径的字符串。问题是我的“filePath”变量实际上是文件夹的路径,而不是文件的路径。因此,构造函数 StreamReader(filePath) 抛出:
System.UnauthorizedAccessException: Access to the path 'D:\testFolder' is denied.
好的,所以这显然是一个错误,我已经通过传递正确的路径来修复它......但是查看 StreamReader(string) 的 MSDN 文档我没有看到任何提及此异常的内容。在异常部分有:
- ArgumentException - 路径是一个空字符串 ("")。
- ArgumentNullException - 路径为空。
- FileNotFoundException - 找不到文件。
- DirectoryNotFoundException - 指定的路径无效,例如位于未映射的驱动器上。
- IOException - 路径包含文件名、目录的错误或无效语法 名称或卷标。
再想一想这个问题,我猜抛出的异常实际上应该是 IOException 而不是 UnauthorizedAccessException。这是 .NET Framework 中的错误吗?问题是我有 IOException 处理程序通知用户无效的文件路径并继续应用程序工作流程而不会崩溃。这个 UnauthorizedAccessException 使我的应用程序崩溃,因为它没有得到处理。
我应该如何处理这类问题?我想我过去遇到过类似的未记录异常的问题,但这确实促使我研究这个问题并在这里提出问题。
【问题讨论】:
标签: c# .net exception exception-handling msdn