C# 对DirectoryInfo.Enumerative文件进行迭代是否会引发异常?

C# 对DirectoryInfo.Enumerative文件进行迭代是否会引发异常?,c#,exception,io,C#,Exception,Io,调用DirectoryInfo.EnumerateFiles可能引发异常,例如DirectoryNotFoundException。只有在获取IEnumerable对象时,或者在迭代文件时(即foreach调用IEnumerator.MoveNext)才会发生这种情况吗 换句话说,下面的代码安全吗 IEnumerable<FileInfo> fileInfos; try { fileInfos = directoryInfo.EnumerateFiles(); }

调用
DirectoryInfo.EnumerateFiles
可能引发异常,例如
DirectoryNotFoundException
。只有在获取
IEnumerable
对象时,或者在迭代文件时(即
foreach
调用
IEnumerator.MoveNext
)才会发生这种情况吗

换句话说,下面的代码安全吗

 IEnumerable<FileInfo> fileInfos;
 try
 {
     fileInfos = directoryInfo.EnumerateFiles();
 }
 catch // snip
 {
    // snip
 }

 foreach (FileInfo fileInfo in fileInfos)
 {
     // Do something
 }
IEnumerable fileInfos;
尝试
{
fileInfos=directoryInfo.EnumerateFiles();
}
接住/剪断
{
//剪断
}
foreach(fileInfos中的FileInfo FileInfo)
{
//做点什么
}
或者我也需要将foreach部分放入一个try块中(如果我想
返回
某个try块中不允许的内容,这会变得非常糟糕)


假设枚举数没有引发异常,那么在遍历文件时删除目录会发生什么情况

不幸的是,此API可能会在
枚举文件
/
枚举目录
调用
移动下一步
调用上引发异常。在这两种情况下,一旦抛出异常,就不能继续使用该枚举数

这不仅仅是
目录NotFoundException
;它还可以抛出未经授权的DaccessException、PathTooLongException和其他异常

这已经发生了,但是没有关于修复的消息。同时,还有一个,或者说一个