【发布时间】:2015-07-15 16:55:11
【问题描述】:
我喜欢创建 Exception 类,其名称表明应用程序特定的问题被注意到和抛出。
为了定义它们,通常定义一个新的class,其超类是某个Exception 类型。
由于父类Exception中有多个通用构造函数,子类一般是这样的:
package com.example.exception;
/**
* MyException is thrown when some application-level expectation is not met.
*/
public class MyException extends Exception {
public MyException() {
super();
}
public MyException(String message) {
super(message);
}
public MyException(Throwable cause) {
super(cause);
}
public MyException(String message, Throwable cause) {
super(message, cause);
}
}
从DRY 的角度来看,我发现这种方法很乏味,尤其是在定义Exception 层次结构时。
我熟悉诸如 Lombok 这样的工具,它们有助于减少常见 Java 模式的重复;对于解决异常类重复这一特定问题的工具有什么建议吗?
【问题讨论】:
-
这对我来说很好。
-
@SotiriosDelimanolis 我相信 OP 试图说明的一点是,如果他有 10 个自定义异常类,他必须在所有这些异常类中重复此代码。
-
@CKing 不,我明白了。这对我来说很好。
-
@SotiriosDelimanolis 是的。对我也很好。但是别人不好,所以值得深思。从一个异常类到另一个异常类的唯一变化是类的名称。这是一个非常好的问题 IMO。
-
你总是可以省略你不使用的构造函数。
标签: java exception inheritance dry