#SpringMVC中如何进行异常处理
#SpringMVC中如何进行异常处理
一、处理思路:
我们在SpringMVC前后端分离项目中往往会基于SSM框架从数据库中获取所需的数据,通过dao、service、controller三层调用,实现最终把数据推送到前端页面展示出来;那么针对于每一层产生的异常我们可以通过同样的思路进行处理,也就是不断的向上一层抛出异常,最终异常会由controller层被抛到前端控制器DispatcherServlet,由DispatcherServlet找到异常处理器进行处理。
这里需要注意的是:我们在向上一层抛出异常的同时,仍然可以正常的进行try catch异常捕获,而不是把一味的把所有异常只进行向上抛出的操作。
异常处理参考代码思路:
1、在controller层直接编写异常代码,然后抛出异常:
这里需要注意的是我们需要在异常的catch代码块中自定义一个异常类,这里定义的类为SysException。
@Controller
@RequestMapping("/exception")
public class ExceptionController{
@RequestMapping("/testException")
public String testException() throws SysException{
try{
int a = 10/0;
}catch (Exception e){
e.printStackTrace();
// 抛出自定义异常信息
throw new SysException("查询用户出现错误");
}
return "success";
}
}
2、编写自定义异常类
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;
}
}
3、编写异常处理器,这里我们会返回一个ModelAndView对象,通过addObject()方法把需要在异常提示页面输出的信息带到前端页面,再通过setViewName()方法指明需要跳转的页面,SpringMVC中的视图解析器会根据该方法设置的信息找到指定页面。
public class SysExceptionResolver implements HandlerExceptionResolver {
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对象
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("errorMsg", ex.getMessage());
modelAndView.setViewName("error");
return modelAndView;
}
}
4、配置异常处理器,我们需要在项目中的xml配置文件中加入SysExceptionResolver,把其交给Spring容器管理。
<bean id="sysExceptionResolver" class="com.bestapply.exception.SysExceptionResolver"/>
5、最后我们可以写一个index.jsp页面和一个异常信息提示页面error.jsp作为测试,最终测试效果呈现如下:
上一篇: springboot如何进行简单的测试
下一篇: 央视网上线独立搜索页面索引站内信息
推荐阅读
-
Golang中如何使用lua进行扩展详解
-
在Laravel5.2中,如何直接使用Auth包里的方法进行直接注册用户呢?
-
如何对PHP程序中的常见漏洞进行攻击(上)
-
ps批处理技巧 photoshop中如何用动作批处理进行图片
-
windows批处理脚本bat命令解析【10】如何运行cmd命令3bat批处理文件中的注释
-
如何从零开始教女同学进行PHP开发(2):表单的处理
-
验证码-php中如何用curl模拟http头信息进行模拟登陆并获取信息
-
Golang中如何对MySQL进行操作详解
-
使用Numpy对特征中的异常值进行替换及条件替换方式
-
javascript - JQuery 如何传递input file的内容至PHP进行处理