调用DirectoryInfo.EnumerateFiles
可能会引发异常,例如DirectoryNotFoundException
. 这只能在我获取IEnumerable
对象时发生,或者在迭代文件时(即foreach
调用时IEnumerator<FileInfo>.MoveNext
)发生吗?
换句话说,下面的代码安全吗?
IEnumerable<FileInfo> fileInfos;
try
{
fileInfos = directoryInfo.EnumerateFiles();
}
catch // snip
{
// snip
}
foreach (FileInfo fileInfo in fileInfos)
{
// Do something
}
或者我是否也需要将 foreach 部分放入 try 块中(如果我想要yield return
一些东西,这会变得非常讨厌,这在 try 块中是不允许的)?
假设枚举器没有抛出异常,那么在迭代文件时删除目录时会发生什么?