zoukankan      html  css  js  c++  java
  • spring的异常处理

    出自于: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>
    

      

  • 相关阅读:
    信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1085:球弹跳高度的计算
    1084:幂的末尾
    1084:幂的末尾
    1084:幂的末尾
    信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1083:计算星期几
    信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1083:计算星期几
    信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1083:计算星期几
    征战蓝桥 —— 2014年第五届 —— C/C++A组第4题——史丰收速算
    幻想迷宫【DFS】
    汉诺塔【模拟】
  • 原文地址:https://www.cnblogs.com/wjqhuaxia/p/9775619.html
Copyright © 2011-2022 走看看