最近我遇到了一个异常,我之前并没有预料到,因为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 - 路径为null。
- FileNotFoundException - 找不到文件。
- DirectoryNotFoundException - 指定的路径无效,例如在未映射的驱动器上。
- IOException - 路径包括文件名、目录名或卷标的不正确或无效语法。
再思考一下这个问题,我想抛出的异常实际上应该是IOException而不是UnauthorizedAccessException。这是.NET Framework的一个错误吗?问题是我已经有了IOException处理程序,可以通知用户有关无效文件路径并继续应用程序工作流程而不会崩溃。这个UnauthorizedAccessException因为未被处理而导致了我的应用程序崩溃。
我该如何处理这种问题?我认为我遇到过类似的未记录异常的问题,但这个问题真的激励我去研究这个问题并在这里提问。