如何识别哪个字段导致异常

时间:2014-09-09 09:46:17

标签: java mysql exception enums

我正在尝试确定哪个字段在java中导致了ConstraintViolationException。我有两个独特的字段,用户名和电子邮件,当我捕获异常时,我想返回正确的枚举字段。

USER_ALREADY_REGISTERED("User Already Registered"),
EMAIL_ALREADY_REGISTERED("Email Address Already In Use"),

这样做的正确方法是什么?

我能想到的一种方法是从异常中获取消息并查看它是否包含字段名称,如果它然后使用一个枚举,否则返回另一个,但是,这看起来有点不对劲 - 有没有更好的方法?

由于

编辑:

    }catch(ConstraintViolationException e){
        if(e.getConstraintName() != null){
            if(e.getConstraintName().toLowerCase().contains("email")){
                return RegistrationStatus.EMAIL_ALREADY_REGISTERED;
            }
        }
        return RegistrationStatus.USER_ALREADY_REGISTERED;

1 个答案:

答案 0 :(得分:0)

使用方法getConstraintViolations()检查发起约束违规异常的属性。