是否应将例外情况放在单独的包裹中?

时间:2009-05-05 15:01:47

标签: java exception-handling

我正在开展一个项目,其中所有异常都放在一个单独的包com.myco.myproj.exceptions中。

这是好习惯吗?

3 个答案:

答案 0 :(得分:48)

我希望包中的例外存在于该包中。 e.g。

com.oopsconsultancy.models.pricing

将包含定价模型和相关例外。其他任何事情似乎都有点反直觉。

答案 1 :(得分:41)

这是一种不好的做法。

这是一个巧合的分组。包应该是连贯的。不要将异常,接口,枚举,抽象类等分组到它们自己的包中。相反,将相关概念分组。

答案 2 :(得分:0)

这将是一个糟糕的做法,并将导致不必要的跨包依赖。应始终在与能够抛出它的类相同的包中定义自定义异常类。您应该尝试最小化创建在整个应用程序中使用的自定义异常,以便使用异常。自定义异常,顾名思义是一个自定义异常,应该专注于特定的部分。对于自定义实用程序类,这应该是相同的。

包应该能够呈现单个功能单元。有关示例,请参阅this自定义异常,它将被抛弃,是该功能单元的一部分,应该在同一个包中

例如:

// Below should be in a single package
interface Draggable{}
abstract class Graphic{}
class Circle extends Graphic implements Draggable{}
class Box extends Graphic implements Draggable{}
final class GraphicValidator {// utility  class}
// don't put below in a separate 'exceptions' package, 
// who's gonna use it anyway other than the components in this package ?
class GraphicRenderingException extends Exception{}