java如何给异常信息加上提示给用户看?

我在数据库的某个字段设置了Unique,让它防止插入重复数据.
但是我插入重复的数据后,就页面出现异常.
图片描述

我想问下,这个异常如何处理给用户说,比如:"数据已经存在"
我是用hibernate操作数据库的.

阅读 6k
5 个回答

把你的项目配一下,堆栈直接打印到页面上是一种极其危险的行为,会让不怀好意的人有机可乘。

回到你的问题,其实try catch就可以了

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实现类来实现你的功能

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏