我在数据库的某个字段设置了Unique,让它防止插入重复数据.
但是我插入重复的数据后,就页面出现异常.
我想问下,这个异常如何处理给用户说,比如:"数据已经存在"
我是用hibernate操作数据库的.
我在数据库的某个字段设置了Unique,让它防止插入重复数据.
但是我插入重复的数据后,就页面出现异常.
我想问下,这个异常如何处理给用户说,比如:"数据已经存在"
我是用hibernate操作数据库的.
在web.xml
中加一项:
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
然后把500.jsp做得友好一些。
可以使用Spring MVC的异常处理拦截器,可以使用注解方式:
1.局部的:作用域在当前Controller下,使用注解@ExceptionHandler(value = {ArithmeticException.class, NullPointerException.class})
@Controller
public class TestController {
@ExceptionHandler(value = {ArithmeticException.class})
public String handleArithmeticException(Exception ex) {
System.out.println("spring test class");
ex.printStackTrace();
return "error";
}
}
2.全局的:即你定义一次,在全局都是有效处理的,使用注解@ControllerAdvice
@ControllerAdvice
public class HandlerExceptionAdvice {
@ExceptionHandler({ArithmeticException.class})
public String handlerArithmeticException(Exception ex) {
ex.printStackTrace();
return "error";
}
}
1、其实最简单的方式,也不一定要落到页面抛500的这种情况,完全可以通过catch最大异常并友好提示给用户弹框;
2、换句话说,既然都能catch了,那完全有能力在用户操作的时候就友好提示给用户,关键在开发阶段没有周全的预防措施,所以才导致了现状。
看你的报错信息,是一个spring项目,在spring中有很多种处理异常的方法,你想把异常信息捕捉到后再经过处理返回给前端界面是吧。
如果是,推荐使用SimpleMappingExceptionResolver这个spring实现类来实现你的功能
12 回答5.9k 阅读
2 回答3.2k 阅读✓ 已解决
3 回答6.9k 阅读✓ 已解决
3 回答3k 阅读✓ 已解决
5 回答4.6k 阅读
4 回答2.3k 阅读
3 回答4.5k 阅读
把你的项目配一下,堆栈直接打印到页面上是一种极其危险的行为,会让不怀好意的人有机可乘。
回到你的问题,其实try catch就可以了