《Springboot极简教程》系统异常全局统一处理:@ControllerAdvice plus @ExceptionHandler

统一异常处理

系统有一个统一异常处理的功能,可减少重复代码,又便于维护。

用@ControllerAdvice和@ExceptionHandler两个注解来做异常的统一处理。

@ControllerAdvice:作用于所有@Controller标注的Controller类
@ExceptionHandler:作用于所有@RequestMapping标注的方法抛出的指定类型的异常。

代码实例

ExceptionHandlerAdvice.java

package com.restfeel.advice

import org.springframework.web.bind.annotation.ControllerAdvice
import org.springframework.web.bind.annotation.ExceptionHandler
import org.springframework.web.context.request.WebRequest
import org.springframework.web.servlet.ModelAndView


/**
 * Created by jack on 2017/3/30.
 *
 * 系统全局统一异常处理
 */
@ControllerAdvice
class ExceptionHandlerAdvice {
    @ExceptionHandler(value = Exception::class) //表示捕捉到所有的异常,你也可以捕捉一个你自定义的异常
    fun exception(exception: Exception, request: WebRequest): ModelAndView {
        val modelAndView = ModelAndView("jsp/error")//error页面
        modelAndView.addObject("errorMessage", exception.message)
        modelAndView.addObject("stackTrace", exception.stackTrace)
        return modelAndView

    }
}

error.jsp

<%--
  Created by IntelliJ IDEA.
  User: jack
  Date: 2017/3/30
  Time: 02:08
  To change this template use File | Settings | File Templates.
--%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/functions"
          prefix="fn" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" %>



    



系统异常统一处理

${errorMessage}>

Debug

Google Baidu StackOverFlow

异常堆栈跟踪日志StackTrace

${line}

源码工程:
https://github.com/Jason-Chen-2017/restfeel

运行

《Springboot极简教程》系统异常全局统一处理:@ControllerAdvice plus @ExceptionHandler_第1张图片
系统异常统一处理
《Springboot极简教程》系统异常全局统一处理:@ControllerAdvice plus @ExceptionHandler_第2张图片
螢幕快照 2017-03-30 13.29.14.png
《Springboot极简教程》系统异常全局统一处理:@ControllerAdvice plus @ExceptionHandler_第3张图片
螢幕快照 2017-03-30 13.29.04.png
《Springboot极简教程》系统异常全局统一处理:@ControllerAdvice plus @ExceptionHandler_第4张图片
螢幕快照 2017-03-30 13.28.55.png

这个思路很有实用价值,大大减少了系统出问题debug,去赋值粘贴到google,baidu, stackoverflow的手工操作。欢迎试用。

你可能感兴趣的:(《Springboot极简教程》系统异常全局统一处理:@ControllerAdvice plus @ExceptionHandler)