如何避免自定义Java异常类中的重复
我喜欢创建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模式的重复; 对于解决异常类重复问题的工具是否有任何建议?
如果您创建“业务”异常,则不应该仅从Exception
复制所有构造函数。 相反,请创建使用您的业务对象的异常。 例如,如果由您的业务对象Request
建模的请求失败,则可以使用一个构造函数创建一个RequestFailedException
:
public RequestFailedException(Request request) {
super("Request to " + request.getUrl() + " failed.";
}
您甚至可以在字段中存储对Request
对象的引用,并提供一个getter,以便处理该异常的方法可以获取有关正在发生的事情的更多信息。
上一篇: How to avoid repetition within custom java exception classes