How to avoid repetition within custom java exception classes

I like creating Exception classes whose names indicate the application-specific problems being noticed and thrown.

To define them, generally a new class is defined whose super-class is some Exception type.

Due to the multiple common constructors in the parent Exception class, generally the sub-class looks something like this:

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);
    }

}

Looking at this from the perspective of DRY, I find this approach tedious, especially when Exception hierarchies are defined.

I'm familiar with tools like Lombok that help with reducing repetition for common Java patterns; are there any suggestions for tools that tackle this specific problem of repetition for exception classes?


If you create "business" exceptions, you shouldn't just copy all constructors from Exception . Instead, create exceptions that use your business objects. For example, if a request failed which is modeled by your business object Request you might create a RequestFailedException with a single constructor:

public RequestFailedException(Request request) {
    super("Request to " + request.getUrl() + " failed.";
}

You could even store a reference to the Request object in a field and provide a getter so that the method that handles the exception may get more information about what was happening.

链接地址: http://www.djcxy.com/p/86656.html

上一篇: Laravel扩展了从作曲家安装的供应商类

下一篇: 如何避免自定义Java异常类中的重复