在尝试回答这个问题时,我惊讶地发现在该文件已经存在时尝试创建一个新文件不会抛出一个唯一的异常类型,它只会抛出一个通用的IOException
.
因此,我想知道如何确定这IOException
是现有文件的结果,还是其他一些 IO 错误。
异常有一个 HResult,但这个属性是受保护的,因此对我来说是不可用的。
我能看到的唯一另一种方法是模式匹配感觉很糟糕的消息字符串。
例子:
try
{
using (var stream = new FileStream("C:\\Test.txt", FileMode.CreateNew))
using (var writer = new StreamWriter(stream))
{
//write file
}
}
catch (IOException e)
{
//how do I know this is because a file exists?
}