我喜欢创建 Exception
类,其名称表明应用程序特定的问题被注意到和抛出。
要定义它们,通常会定义一个新的类
,其父类(super class)是某种Exception
类型。
由于Exception
父类有多个公共(public)构造函数,一般子类看起来是这样的:
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,以便处理异常的方法可以获得有关正在发生的事情的更多信息。
关于java - 如何避免自定义 Java 异常类中的重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31436499/