Как использовать несколько специфичных для ошибки параметров в пользовательских параметрах конструктора исключений? - PullRequest
0 голосов
/ 16 февраля 2019

Я создаю пользовательское исключение примерно так.

public class ValidationException extends RuntimeException {

    public validationException(String errorId, String errorMsg) {
        super(errorId, errorMsg);
    }
}

Это, конечно, вызывает ошибку, потому что RuntimeException не имеет такого конструктора для обработки этого.

Я также хочу получить errorId и errorMsg в моем GlobalExceptionalHandler от

ex.getMessage ();

Но я хочу, чтобы функцииполучить оба errorId и errorMessage отдельно.Как этого достичь?

1 Ответ

0 голосов
/ 16 февраля 2019

Вы хотите, чтобы errorId и errorMsg были полями класса ValidationException, точно так же, как вы делали бы это с обычным классом.

public class ValidationException extends RuntimeException {

    private String errorId;
    private String errorMsg;

    public validationException(String errorId, String errorMsg) {
        this.errorId = errorId;
        this.errorMsg = errorMsg;
    }

    public String getErrorId() {
        return this.errorId;
    }

    public String getErrorMsg() {
        return this.errorMsg;
    }
}

и в вашем GlobalExceptionHandler:

    @ExceptionHandler(ValidationException.class)
    public ResponseEntity<SomeObject> handleValidationException(ValidationException ex) {
        // here you can do whatever you like 
        ex.getErrorId(); 
        ex.getErrorMsg();
    }
...