一起文库网 懒人学习网 雨竹林中考网 高考报名网 雨竹林文档网 加入收藏 设为首页

雨竹林文档网      懒人考试网|阳光学习网


懒人学院:Spring MVC框架自定义异常处理器

一起文库网   来源: 懒人学院  2024-04-08     

本站非官方网站,信息完全免费,仅供参考,不收取任何费用,具体请以官网公布为准!
SpringMVC框架为我们提供了一套自定义异常处理的方法,下面我们通过一个小例子,来了了解一下SpringMVC项目异常处理的常用方法。
 
一、异常处理的的设计思路
 
SpringMVC框架通过分层的方法处理异常传递,dao层发生异常会抛给service,service抛给controller,controller抛给前端控制器,前端控制器调用全局异常处理器,这个处理器就是我们要讨论的自定义全局异常处理器。
 
全局自定义异常处理器设计思路:
1、解析出异常类型
2、判断异常类型
如果该异常类型是自定义异常,直接抛出异常信息,在错误页面展示
如果该异常类型不是自定义异常 ,构造一个自定义的异常类型(信息为“未知错误”),在错误页面展示
 
二、开发自定义异常处理
 
1、定义一个自定义的异常类,这个类就是前面提到的自定义异常类,需要继承Exception
 
package fred.ssm.exception;
 
public class CustomException extends Exception {
public String message;
public CustomException(String message){
super(message);
this.message=message;
}
}
2、定义一个类,这就是我们说的自定义全局异常处理器,它需要实现HandlerExceptionResolver接口,springmvc框架就会识别它,每个应用程序只能有一个全局异常处理器,编写方法按照我们前面讨论的思路实现。
 
package fred.ssm.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 CustomExceptionResolver implements HandlerExceptionResolver{
 
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
 
CustomException customException = null;
if(e instanceof CustomException){
customException=(CustomException)e;
}else{
customException = new CustomException("未知错误");
}
String message=customException.getMessage();
 
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("message",message);
modelAndView.setViewName("error");
 
return modelAndView;
}
}
3、添加错误展示页面 error.jsp,用于抛出异常后处理解析异常错误的视图
 
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>错误提示信息</title>
</head>
<body>
 
系统产生如下错误信息:${message}
 
</body>
</html>
4、修改springmvc.xml 实现在springmvc框架中注入全局异常处理器
 
<!--全局异常处理器,要实现HandlerExceptionResolver接口的类就是全局异常处理器-->
<bean class="fred.ssm.exception.CustomExceptionResolver"/>
三、异常处理测试
 
测试方法,在controller、service、dao中任意一处手动抛出异常。如果是程序中手动抛出的异常,在页面中显示自定义异常信息,如果不是手动抛出的异常,显示未知错误。
 
userinfo = userinfoService.FindUserinfoByUsercode(usercode);
 
if (userinfo==null){
throw new CustomException("修改的用户信息不存在!");
}
这里我们模拟用户输入一个错误的usercode,FindUserinfoByUsercode方法查不到数据后,userinfo==null,这是抛出自定义异常,检查自定义异常处理器时候工作。
Image.png
 
修改请求的usercode,触发异常
Image.png
 
在idea集成开发环境中跟踪代码可以看到,这里程序抛出自定义异常
Image.png
 
页面跳转到error.jsp,并显示自定义错误信息。
Image.png
 
通过这个小程序的演示,我们可以了解springmvc框架对异常处理的基本方法,希望对大家有所裨益。

懒人学习网   学习文档   news.lazyedu.cn : 懒人学习网,免费分享学习资料。

[责任编辑:文库在线]

懒人学习百事通懒人学习网 懒人考试网

学参学习网,非官方公益学习阅读网!

非官方网站: 本站为网址导航站点,非官方网站,具体以官方网站公布为准.

公益免费: 本站所有信息完全免费,不收取任何费用,谨防上当受骗.

信息仅供参考: 因信息具有时效性,本站所有信息仅供参考,请勿用于非法用途.


郑重声明:本站不开设任何辅导班,谨防上当受骗!完全公益站点,不接受任何赞助!



免费阅读

新免费分享的文档

本站所有信息完全免费,不收取任何费用!

使用必读 |   学习文库 |   阳光学习网 |   山东高考网 |   懒人考试网 |   郑重声明 |   懒人考试网 | 高考频道

(C) 考试专题  学参网手机版  学习专题   版权所有

非官方公益学习网,本站不开设任何辅导班、不收取任何费用!闽ICP备11025842号-4 | 打着本站名义收费的均为冒充的骗子!

Copyright XUECAN, All Rights Reserved.