最佳实践:检索实际不存在的路径

时间:2010-06-22 10:04:45

标签: path

我目前正在编写一些方法来确定硬盘上的某些路径。为了示例,我们将它们称为GetBasePath(),GetSpecialPath()等。

我的问题是,从设计的角度来看,如果目标在预期的位置不存在,这些方法应该如何表现呢?在这种情况下,我有点困惑最好的做法。

我考虑过一些可能的解决方案:

1:方法的名称应该告诉你它的作用,因此GetBasePath或GetSpecialPath并不意味着该方法检查是否存在。调用自己的存在是调用者的事。此外,一个名为GetBasePathIfItExists的方法会有点过头......

2:如果路径不存在,那是一种例外情况,因为它们应该存在(至少在我的情况下),因此方法应该抛出异常。

3:方法只应返回VALID路径,因此如果它不能返回有效的现有路径,则应返回空字符串。 (例如:Microsoft为Environment.GetFolderPath()执行此操作)

我目前支持解决方案1,因为这样做的好处是可以轻松地告诉用户WHERE路径预期存在。一个例外可以告诉你同样的情况,但它真的是一个例外吗?

你会建议什么?

我希望这个问题不是太具体,其他读者也可以从一个好的答案中受益。

2 个答案:

答案 0 :(得分:1)

另一个选项可能是让函数创建相应的目录(如果它尚不存在)。当然,执行此操作的能力取决于调用应用程序的预期权限和目录位置。如果无法创建目录(例如,如果已存在同名文件),则抛出异常。

答案 1 :(得分:1)

如果期望这些路径始终存在,那么它们的非存在性是异常的,您确实应该抛出异常。这也是框架在许多IO命名空间类中的运行方式。

如果有合理的期望这些路径可能不存在,您可能需要提供一个xxxExists布尔方法来检查是否存在并允许程序员对该问题采取一些措施。