SpringMVC 异常处理
如果我们的代码出现异常时一般会在页面很生硬的把异常打印出来,一是这样很难看再就是显得页面很没有水准,此时我们就可以使用异常处理器使页面出现异常时跳转到一个比较友好的错误提示页面。
1.编写自定义异常类
2.编写异常处理器
3.配置异常处理器
首先我们要编写一个自定义异常类,用于提示信息。
package com.qst.Exception;
/*
自定义异常
*/
public class SysException extends Exception{
//存储异常信息
private String message;
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public SysException(String message) {
this.message = message;
}
}
编写异常处理器 需要实现HandlerExceptionResolver这个接口
package com.qst.Exception;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//异常处理器
public class ExceptionResolver implements HandlerExceptionResolver{
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
SysException ex = null;
//判断异常是不是自定义的那个异常
if(e instanceof SysException){
//是的话进行强转
ex=(SysException)e;
}else{
//不是则输出系统维护
ex=new SysException("系统维护。。");
}
ModelAndView mv= new ModelAndView();
//把异常信息封装
mv.addObject("errorMess",ex.getMessage());
//设置跳转页
mv.setViewName("error");
System.out.println(e.getMessage());
return mv;
}
}
在控制器空处理异常
package com.qst.Controller;
import com.qst.Exception.SysException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/exc")
public class exceptionController {
@RequestMapping("/textException")
public String textException() throws SysException{
System.out.println("exc....");
//int b=10/0;
try {
int a = 10/0;
} catch (Exception e) {
e.printStackTrace();
throw new SysException("查询出现错误");
}
return "success";
}
}
在配置文件中添加一个异常解析器用于解析刚编写的异常处理器
<!--配置异常解析器-->
<bean id="exceptionResolver" class="com.qst.Exception.ExceptionResolver"></bean>
error.jsp 用于进行显示异常页面
<%--isELIgnored="false" 用于 开启EL表达式--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>error</title>
</head>
<body>
${errorMess}
</body>
</html>
还没有评论,来说两句吧...