【发布时间】:2017-01-28 18:20:39
【问题描述】:
我在 Spring 上的 Web 应用程序中使用 Hibernate。我在控制器中使用 try catch 块的方法,如果一切正常,我设置重定向参数“success == true”,如果出现问题,我使用“error == true”。 有用。但有时在我的控制台中休眠会向我显示警告,例如:
2017-01-28 19:13:44.253 WARN 4532 --- [nio-8080-exec-8] o.hibernate.util.JDBCExceptionReporter : SQL Error: 1062, SQLState: 23000
2017-01-28 19:13:44.253 ERROR 4532 --- [nio-8080-exec-8] o.hibernate.util.JDBCExceptionReporter : Duplicate entry
我只想在 try catch 块中捕获这些警告,因为如果我尝试将新条目添加到数据库中 - 在这种情况下 - 重复条目然后在 try catch 块中所有内容都被接受并且我得到信息“操作成功”但是它不是。 我试图捕捉不同的异常,如 SQLException、HibernateException,甚至是一般的异常。但它不起作用。对于添加、更新、删除条目等操作,我使用 'void' 方法,因此我无法返回一些值。
是否可以从控制台捕获这些警告/错误以及如何捕获?
@RequestMapping(value="/adduserdb", method=RequestMethod.POST)
public String addUserToDb(@ModelAttribute(value="userform") User user, RedirectAttributes redirectAttributes) {
try {
userService.createBasicUser(user);
redirectAttributes.addAttribute("success", true);
return "redirect:/admin/user/adduser";
} catch(Exception e) {
redirectAttributes.addAttribute("error", true);
return "redirect:/admin/user/adduser";
}
}
这是我的一种方法示例,但它不起作用。
【问题讨论】:
-
您确定确实引发了异常吗? “抓住不抓住”和“没有抓住”之间会有区别。也许 userService 会处理它?