SpringMVC-异常处理
2017-05-26 02:09
281 查看
在开发时,我们经常会遇到异常,通常可以分为预期异常与运行时异常两类,有一些异常是系统异常,而有一些异常却是一些未知的错误,在SpringMVC中,可以通过异常处理器的配置对这两种异常进行处理。
思路:在dao层、Service层、Controller层依次通过异常抛出(throws Ecception),最后通过springmvc的前端控制器交给异常处理器进行处理。
在SpringMVC中,我们可以通过全局异常处理器对异常进行统一的处理。
步骤如下:
package com.sw.exception;
/*
*@Author swxctx
*@time 2017年5月26日
*@Explain:自定义异常类,针对与其的异常在系统中抛出
*/
public class DataException extends Exception{
private static final long serialVersionUID = 1L;
public String messages;//异常信息
public DataException(String messages) {
super(messages);
this.messages = messages;
}
public String getMessages() {
return messages;
}
public void setMessages(String messages) {
this.messages = messages;
}
}
1、解析异常信息
2、判断异常信息是否为系统自带的异常信息,若为系统自定义异常信息,那么通过自定义异常类直接取出异常信息进行显示,如果不是则构造一个自定义异常类型。
在SpringMVC中提供了一个HandlerExceptionResolver,通过继承该接口,我们就可以对异常信息进行相关的处理,代码如下:
package com.sw.exception;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
/*
*@Author swxctx
*@time 2017年5月26日
*@Explain:全局异常处理器
*/
public class DataExceptionResolver implements HandlerExceptionResolver{
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception exception) {
DataException dataException = null;
//是否为系统异常
if (exception instanceof DataException) {
//抛出系统异常
dataException = (DataException) exception;
}else{
//未知异常
dataException = new DataException("未知异常...");
}
//错误信息
String messages = dataException.getMessages();
ModelAndView modelAndView = new ModelAndView();
//错误信息传到页面
modelAndView.addObject("messages", messages);
//跳转到错误页面
modelAndView.setViewName("error");
return modelAndView;
}
}
如上代码所示,通过继承接口,首选对异常信息进行解析,判断其是不是系统异常,如果是系统异常则通过之前定义的异常类获取异常信息抛出到页面,如果不是,则自定义了"未知异常..."抛出。
<!-- 全局异常处理器 -->
<bean class="com.sw.exception.DataExceptionResolver"></bean>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>异常提示</title>
</head>
<body>
${messages }
</body>
</html>
结语:通过上述的配置,在系统运行时若出现系统异常,则会通过异常类获取异常信息显示系统的异常信息,如果是未知异常,那么则会在页面显示“未知异常”字样,总之,将异常分为两类进行处理就可以了。
思路:在dao层、Service层、Controller层依次通过异常抛出(throws Ecception),最后通过springmvc的前端控制器交给异常处理器进行处理。
在SpringMVC中,我们可以通过全局异常处理器对异常进行统一的处理。
步骤如下:
自定义异常类
在开发中会出现很多的异常信息,那么我们需要自己针对不同的异常类型进行定义,而后通过异常处理器获取异常信息进行抛出显示,此类继承于Exception,则系统抛出的异常均可捕获到,通过此类即可对系统产生的异常进行捕获展示,如下(继承于Exception):package com.sw.exception;
/*
*@Author swxctx
*@time 2017年5月26日
*@Explain:自定义异常类,针对与其的异常在系统中抛出
*/
public class DataException extends Exception{
private static final long serialVersionUID = 1L;
public String messages;//异常信息
public DataException(String messages) {
super(messages);
this.messages = messages;
}
public String getMessages() {
return messages;
}
public void setMessages(String messages) {
this.messages = messages;
}
}
全局异常处理器
全局的异常处理器主要完成如下功能:1、解析异常信息
2、判断异常信息是否为系统自带的异常信息,若为系统自定义异常信息,那么通过自定义异常类直接取出异常信息进行显示,如果不是则构造一个自定义异常类型。
在SpringMVC中提供了一个HandlerExceptionResolver,通过继承该接口,我们就可以对异常信息进行相关的处理,代码如下:
package com.sw.exception;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
/*
*@Author swxctx
*@time 2017年5月26日
*@Explain:全局异常处理器
*/
public class DataExceptionResolver implements HandlerExceptionResolver{
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception exception) {
DataException dataException = null;
//是否为系统异常
if (exception instanceof DataException) {
//抛出系统异常
dataException = (DataException) exception;
}else{
//未知异常
dataException = new DataException("未知异常...");
}
//错误信息
String messages = dataException.getMessages();
ModelAndView modelAndView = new ModelAndView();
//错误信息传到页面
modelAndView.addObject("messages", messages);
//跳转到错误页面
modelAndView.setViewName("error");
return modelAndView;
}
}
如上代码所示,通过继承接口,首选对异常信息进行解析,判断其是不是系统异常,如果是系统异常则通过之前定义的异常类获取异常信息抛出到页面,如果不是,则自定义了"未知异常..."抛出。
springmvc.xml配置
在配置文件中我们只需要引入全局异常处理器即可:<!-- 全局异常处理器 -->
<bean class="com.sw.exception.DataExceptionResolver"></bean>
Jsp页面异常信息显示
系统发生异常后,需要通过页面显示错误,如下:<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>异常提示</title>
</head>
<body>
${messages }
</body>
</html>
结语:通过上述的配置,在系统运行时若出现系统异常,则会通过异常类获取异常信息显示系统的异常信息,如果是未知异常,那么则会在页面显示“未知异常”字样,总之,将异常分为两类进行处理就可以了。
相关文章推荐
- springMVc对异常的处理
- SpringMVC对异常进行全局处理,并区分对待ajax和普通请求
- springmvc 统一处理异常机制
- SpringMVC 常见异常处理
- springMVC实现全局异常处理
- 使用springMVC进行统一的异常处理
- SpringMVC全局异常处理
- SpringMvc的异常处理
- SpringMVC异常处理流程
- SpringMVC 异常处理
- 不错的对springmvc 异常处理
- 我在项目中Springmvc处理异常并记录日志(一) ps:如何有更好的方法,请写到评论中多多交流,谢谢!
- springMvc、Spring项目异常处理和Log4j的配置(转)
- springmvc异常统一处理
- SpringMVC利用注解实现异常处理
- springMVC全局的异常处理
- SpringMVC控制台打印异常 异常处理
- SpringMVC统一异常处理简单配置
- SpringMVC 统一异常处理入口
- SpringMVC 异常处理