您的位置:首页 > 其它

通过异常来提示发生主键冲突

2017-02-10 20:06 134 查看

进行数据库操作,总是会遇到各种各样的异常,如何得到反馈,并给用户友好的提示需要做一番功夫。

比如说如果用户输入了一个已经存在的用户名(主键)的话,下层会返回sql异常:

SQL 错误: ORA-00001: 违反唯一约束条件 (BK.PK_TUSER)

类似这样。异常类为SQLIntegrityConstraintViolationException,可以通过api查看这个类,主要是违反完整性约束(foreign key, primary key or unique key)时会出现。SQLState的值为23.

我们可以通过在底层抛出异常,到UI层处理的方式来解决。

首先在dao层抛出异常:

public void addUser(User user) throws SQLIntegrityConstraintViolationException,Exception {

}

在biz层继续上抛

public void addUser(User user) throws SQLIntegrityConstraintViolationException,Exception {
UserDao dao = new UserDao();
dao.addUser(user);
}

在ui层获取异常,进行提示

public static void addUserTest(){
UserBiz biz = new UserBiz();
User user = new User();
user.setUname("jack2");
user.setPwd("123");
user.setRole(IRole.VIP);
try {
biz.addUser(user);
System.out.println(user.getUname() + "添加成功");
} catch (SQLIntegrityConstraintViolationException e) {

//这里获取异常,这是一个示范代码,但是我觉得不需要判断value为23000,这个名字就已经确定了这个值
if(e.getSQLState().equals("23000")){
System.out.println("用户名已经存在,请重新输入");
}
} catch (Exception e) {
e.printStackTrace();
}
}

这样就获取到了主键冲突的异常,可以进行我们的相应处理了,比之前把所有的异常一股脑儿都打印出来要好一些。

转载于:https://my.oschina.net/u/1465239/blog/835766

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐