2008-09-25 68 views
7

我几乎觉得很尴尬,但我总是在为如何组织异常定义而苦恼。我之前完成的三种方法是:你如何组织异常定义?

  • 使用file-per-class规则。我对此并不满意,因为它混乱了我的目录结构和命名空间。我可以将它们组织到子目录和段名称空间中,但我不太喜欢那样,这不是标准库通常这样做的方式。
  • 将定义放在包含相关类的文件中。我不太喜欢这个,因为那么异常定义是分散的,如果没有代码导航工具的帮助可能很难找到。
  • 一个文件,包含名称空间或相关类的“包”的所有异常定义。这是上述两者之间的妥协,但它可能会导致很难说出哪些异常“属于”一组特定类别或功能集合的情况。

我真的不喜欢上述任何一种,但是有没有一种最佳实践,我没有拿起那会更好?

编辑:有趣。从“程序的Microsoft Visual C#2008:语言”,多尼斯表明:在单独的程序

为了方便和可维护性, 部署应用程序异常的 组。 (第426页)

我想知道为什么?

+0

这种语言不可知论性如何? – ykaganovich 2008-09-26 02:56:53

回答

2

我用下面的方法:在一个单独的文件

  • Exception类:当它是通用的,可以由多个类
  • Exception类一起与类把它扔抛出:当有只有一个这样的类。这是有道理的,因为例外是该类别的一部分'接口

后者的变体使异常成为抛出类的成员。我曾经这样做,但发现它很麻烦。

4

我倾向于将每个文件的例外一个放在与生成它们的对象相同的包中,放在单个文件中。这是Java API和.Net库使用的范例,因此大多数人至少熟悉当时对象的组织结构。

现代IDE在跟踪目录中的文件方面做得非常好,因为使用具有相同名称的文件中的类的好处超出了拥有较少文件的价值。

3

在C++中,我一直定义的类将在同一个命名空间中用作与抛出它们的类相同的名称空间,并将它们放置在同一个标​​头中。对于通用的异常,将在类之间共享,我使用单个头将它们与其他实用程序函数和类一起分组在一起。

我不认为在这方面有任何正确的做事方式;无论您的情况如何,它都适合您。