眨眼吞咽异常

时间:2012-10-16 08:56:59

标签: java jaxb apache-wink

我正试图在jinkb / jackson的wink中对Enum类型实现一些验证。

我有一个带有一些值的枚举。我想允许null,即不在xml / json中设置它,但我也想检查无效值并给出错误。

我发现默认情况下jaxb / wink只返回一个null,如果我提供的值不在enum中,所以我尝试使用setter来验证输入。使用Level.valueOf(newLevel)尝试将提供的字符串转换为值会引发异常并给出堆栈跟踪和http错误。 这没关系,但我真正想要的是一个自定义异常,以便我可以控制错误响应的编组。我试过抛出一个,但它被(我想)眨眼吞噬了。

enum Level {BASIC, ADVANCED};

@XmlAttribute
public void setLevel(String newLevel) throws MyException {
    if (newNodeLevel != null) {
        try {
            this.level = Level.valueOf(newLevel);
        } catch (IllegalArgumentException e) {
            throw new MyException("level invalid");
        }
   }
}

除了使用Throwable而不是Exception之外,有什么方法可以实现这个目标吗?

0 个答案:

没有答案