如何组织没有代码重复的异常类?

yeg*_*256 4 java

我的包中有许多自定义的Exception类,它们与它们的基类没有区别.我拥有它们的唯一目的是将一个异常原因与另一个异常原因区分开来.这是我的一个Exception类的样子:

package com.XXX;
/**
 * Thrown when query format is invalid.
 */
public class InvalidFormatException extends Exception {
  /**
   * Public ctor.
   * @param m Supplementary message
   */
  public InvalidFormatException(final String m) {
    super(m);
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是所有类都完全相同,就像双胞胎一样.唯一不同的是他们的名字.我不喜欢这种情况,因为这是一个明显的代码重复.在其他语言(如PHP,Python等)中,我会在运行时动态地声明这些类,但Java不允许这样,我也理解.有没有解决方法?

小智 5

您可以创建一个具有可通过控制器设置的代码属性的泛型类.这样,抛出时只能有一个类和实例.

那就是说,当你说上课是双胞胎时,我不同意.它们代表完全不同的功能异常.基于关注点分离模式,当前的实现是正确的.使用我的泛型类会混淆你班级中的问题而且应该被禁止.

此外,我看到你继承了Exception ...我不会解释很多,但你应该在应用程序中使用RuntimeException来实现功能异常.在网上浏览,有很多关于它的文献.