【发布时间】:2010-03-10 16:44:10
【问题描述】:
我们有一个 REST API,客户端可以在其中提供表示在 Java 枚举中定义在服务器上的值的参数。
所以我们可以提供描述性错误,我们将这个 lookup 方法添加到每个 Enum。好像我们只是在复制代码(不好)。有更好的做法吗?
public enum MyEnum {
A, B, C, D;
public static MyEnum lookup(String id) {
try {
return MyEnum.valueOf(id);
} catch (IllegalArgumentException e) {
throw new RuntimeException("Invalid value for my enum blah blah: " + id);
}
}
}
更新:valueOf(..) 提供的默认错误消息为No enum const class a.b.c.MyEnum.BadValue。我想从 API 中提供一个更具描述性的错误。
【问题讨论】:
-
好吧,IllegalArgumentException 没有什么问题,它已经是一个 RuntimeException。您想在这里改进什么?
-
添加比仅使用
valueOf(和IllegalArgumentException)时提供的更具描述性的消息