Springmvc中异常处理
思路:做一个全局异常处理器,处理所有没有处理过的运行时异常用于更友好地提示用户。
创建全局异常处理器
/**
* 全局异常处理器
* @author Steven
*
*/
public class CustomerException implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object hanlder,
Exception e) {
//记录日志
e.printStackTrace();
//错误消息
String msg = "很抱歉,系统发生异常了,请联系管理员";
//响应用户错误提示
ModelAndView mav = new ModelAndView();
//返回错误消息
mav.addObject("msg", msg);
//响应错误提示页面
mav.setViewName("msg");
return mav;
}
}
配置异常处理器
在springmvc.xml中配置全局异常处理器
<!-- 全局异常处理器 -->
<bean class="com.java.Exception.CustomerException "/>
测试访问queryVoid.action
@RequestMapping("queryVoid")
public void queryVoid(HttpServletRequest request,HttpServletResponse response) throws Exception{
int i = 1/0;//定义错误异常
//设施响应的字符编码
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter printWriter = response.getWriter();
printWriter.println("这是response的打印消息");
}
更智能、更友好的提示,解决方案
新建自定义异常类
/**
* 自定义异常
* @author Steven
*
*/
public class MyException extends Exception {
//错误消息
private String msg;
public MyException() {
super();
}
public MyException(String msg) {
super();
this.msg = msg;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
加上异常判断
@RequestMapping("queryVoid")
public void queryVoid(HttpServletRequest request,HttpServletResponse response) throws Exception{
if (true) {
throw new MyException("有错误");
}
int i = 1/0;
//设施响应的字符编码
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter printWriter = response.getWriter();
printWriter.println("这是response的打印消息");
}
//自定义异常处理
if (e instanceof MyException) {
result = ((MyException)e).getMsg();
}
测试访问queryVoid.action
@RequestMapping("queryVoid")
public void queryVoid(HttpServletRequest request,HttpServletResponse response) throws Exception{
if (true) {
throw new MyException("有错误");
}
int i = 1/0;
//设施响应的字符编码
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter printWriter = response.getWriter();
printWriter.println("这是response的打印消息");
}
本文详细介绍如何在SpringMVC中实现全局异常处理,通过创建自定义异常处理器和异常类,提供更友好的用户错误提示。包括配置全局异常处理器、自定义异常类以及异常判断的代码示例。
476

被折叠的 条评论
为什么被折叠?



