码迷,mamicode.com
首页 > 编程语言 > 详细

spring的异常处理

时间:2018-10-12 01:23:40      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:tail   end   4.0   --   err   自定义异常   页面   sdn   handler   

出自于:https://blog.csdn.net/he90227/article/details/46309297   ---- 利用Spring进行统一异常处理的两种方式。

 

原文:https://blog.csdn.net/he90227/article/details/46309297?utm_source=copy

1.实现接口HandlerExceptionResolver

package com.jay.platform.exception.handler;
 
import java.io.IOException;
import java.net.ConnectException;
import java.net.SocketTimeoutException;
import java.util.Date;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.log4j.Logger;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
 
import com.jay.platform.exception.AjaxException;
import com.jay.platform.exception.BusinessException;
 
/**
 * 
 * @ClassName: ExceptionHandler
 * @Description: 统一异常处理 , 注意这里可以处理Controller层抛出的异常,但不处理Controller捕获的异常(Controller捕获的异常,这里不再处理)
 * @author Jay He
 * @date 2014年11月4日 上午10:22:11
 * 
 */
public class ExceptionHandler implements HandlerExceptionResolver {
    private static final Logger LOGGER = Logger
	    .getLogger(ExceptionHandler.class);
 
    @Override
    public ModelAndView resolveException(HttpServletRequest request,
	    HttpServletResponse response, Object handler, Exception ex) {
	LOGGER.error(new Date().toLocaleString() + "异常信息", ex);
	if (ex instanceof NumberFormatException) {
	    return new ModelAndView("exception/number");
	} else if (ex instanceof NullPointerException) {
	    return new ModelAndView("exception/null");
	} else if (ex instanceof BusinessException) {
	    return new ModelAndView("exception/business");
	} else if (ex instanceof SocketTimeoutException
		|| ex instanceof ConnectException) {
	    try {
		response.getWriter().write("网络异常");
	    } catch (IOException e) {
		e.printStackTrace();
	    }
	    return new ModelAndView("exception/net_error");
	}else if(ex instanceof AjaxException){
	   System.out.println("-=-=");
	}
	return new ModelAndView("exception/exception");
    }
 
}

  

2.继承AbstractHandlerExceptionResolver类

package com.jay.platform.exception.handler;
 
import java.io.IOException;
import java.net.ConnectException;
import java.net.SocketTimeoutException;
import java.util.Date;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.log4j.Logger;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver;
 
import com.jay.platform.exception.AjaxException;
import com.jay.platform.exception.BusinessException;
 
/**
 * 
 * @ClassName: ExceptionHandler
 * @Description: 统一异常处理 , 注意这里可以处理Controller层抛出的异常,但不处理Controller捕获的异常(Controller捕获的异常,这里不再处理)
 * @author Jay He
 * @date 2014年11月4日 上午10:22:11
 * 
 */
public class ExceptionHandler extends AbstractHandlerExceptionResolver{
    private static final Logger LOGGER = Logger
	    .getLogger(ExceptionHandler.class);
 
    @Override
    protected ModelAndView doResolveException(HttpServletRequest request,
	    HttpServletResponse response, Object handler, Exception ex) {
	<pre name="code" class="java">LOGGER.error(new Date().toLocaleString() + "异常信息", ex);
	if (ex instanceof NumberFormatException) {
	    return new ModelAndView("exception/number");
	} else if (ex instanceof NullPointerException) {
	    return new ModelAndView("exception/null");
	} else if (ex instanceof BusinessException) {
	    return new ModelAndView("exception/business");
	} else if (ex instanceof SocketTimeoutException
		|| ex instanceof ConnectException) {
	    try {
		response.getWriter().write("网络异常");
	    } catch (IOException e) {
		e.printStackTrace();
	    }
	    return new ModelAndView("exception/net_error");
	}else if(ex instanceof AjaxException){
	   System.out.println("-=-=");
	}
	return new ModelAndView("exception/exception");

在配置文件中添加自定义异常处理模块

 <!-- Spring MVC的统一异常处理 -->
    <bean id="exceptionResolver" class="com.jay.platform.exception.handler.ExceptionHandler"/>  
错误页面展示:例:
 
error.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>Error页面</title>
</head>
<body>
<center>
<h1>Error页面</h1><br>
<h2>出错信息</h2>
<br><br>
错误描述
<br>
${errorTips }
<br><br>
<br><br>
错误异常信息栈
<br><br>
${ex }
</center>
</body>
</html>

  

spring的异常处理

标签:tail   end   4.0   --   err   自定义异常   页面   sdn   handler   

原文地址:https://www.cnblogs.com/wjqhuaxia/p/9775619.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!