Errors Средний

Использовать Records для лаконичных неизменяемых типов ответов об ошибках.

✕ Java 8
// Verbose error class
public class ErrorResponse {
    private final int code;
    private final String message;
    // constructor, getters, equals,
    // hashCode, toString...
}
✓ Java 16+
public record ApiError(
    int code,
    String message,
    Instant timestamp
) {
    public ApiError(int code, String msg) {
        this(code, msg, Instant.now());
    }
}
Заметили проблему в этом коде? Сообщите нам.
📏

Лаконичность

Определение типов ошибок в 3 строках вместо 30.

🔒

Неизменяемость

Данные об ошибке не могут быть случайно изменены после создания.

📋

Автоматический toString

Идеально для логирования — все поля отображаются автоматически.

Старый подход
Map или громоздкий класс
Современный подход
Record-ошибки
Начиная с JDK
16
Сложность
Средний
Ответы об ошибках на основе Record
Доступно

Доступно в JDK 16 (март 2021)

Records отлично подходят для ответов об ошибках — они неизменяемы, имеют встроенные equals/hashCode для сравнения и toString для логирования. Пользовательские конструкторы позволяют выполнять валидацию или задавать значения по умолчанию.