Errors 中级

使用 record 定义简洁、不可变的错误响应类型。

✕ 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 行定义错误类型。

🔒

不可变

错误响应在创建后无法修改。

🧩

可组合

error record 可以嵌套并与模式匹配配合使用。

旧方式
Map 或冗长的类
现代方式
错误 record
自 JDK
16
难度
中级
基于 record 的错误响应
可用

自 JDK 16 起广泛可用(2021 年 3 月)

record 非常适合错误响应——它们是不可变的,内置 equals/hashCode/toString,并且只需一行定义。非常适合 API 错误、验证结果和失败上下文。

分享 𝕏 🦋 in