我有以下方法我的工作:我该如何获得并在C#中捕获必要的例外?
private IEnumerable<TreeNode> GetChildNodes(TreeNode parent)
{
string path = parent.Tag.ToString();
// Add Directories
string[] subdirs = Directory.GetDirectories(path);
foreach (string subdir in subdirs)
{
yield return GetChildNode(subdir);
}
// Add Files
string[] files = Directory.GetFiles(path);
foreach (string file in files)
{
var child = GetChildNode(file);
fileNodeMap[file] = child;
yield return child;
}
}
这正常工作与Directory.GetDirectories()和Directory.GetFiles(除外)都可以扔,我想捕获异常。
我不能赶上其利用这些方法的代码片段,由于我使用的产率(产率不能置于一试的主体内,如果有一个陷阱)。我知道我可以删除产量,并简单地添加到我的孩子收集,但我很好奇,有人会从这两种方法捕捉IOExceptions,并仍然利用收益率?
Yuck。这不仅仅是因为竞争条件的原因,它会抛出异常(正如答案中所提到的那样),这是无结果的失败。如果目录不存在于您期望的目录中,则您应该尽早失败并快速失败。例外是完全合理的方式。 – 2014-04-15 10:32:38