spring boot 异常处理

package com.cy.pj.common.web;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import com.cy.pj.common.pojo.JsonResult;

/**
 * @ControllerAdvice注解描述的类为spring web (MVC) 控制层的一个全局异常处理对象,当控制层出现异常以后,
 *                                首先会检测控制层类中是否有异常处理方法,
 *                                假如没有则会查找是否有@ControllerAdvice注解描述
 *                                的类然后检测全局异常处理类中是否 有合适的异常处理方法. 假如如有则直接调用方法处理异常,
 * 
 * @author ldg
 *
 */
@ControllerAdvice
public class GlobExceptionHandler {

	/**
	 * @ExceptionHandler注解描述的方法为-一个异常处理方法, 注解中定义的. 异常类型,为当前方法的可以处理的异常处理类型
	 *                                     (当然也可以处理异常类型的子类类型).在异常处理方法中通常会
	 *                                     定义一一个异常参数,来接收异常对象.
	 */

	@ExceptionHandler(RuntimeException.class)
	@ResponseBody
	public JsonResult doHandleRuntimeException(RuntimeException e) {

		return new JsonResult(e);
	}
}

局部的try-catch优先级最高
局部的
@ExceptionHandler(RuntimeException.class)次之
全局的异常处理最后


**前端控制器DispatcherServlet调用controller **
如果出现异常,前端控制器首先会到controller中查看是否有异常处理方法
如果有则调用相应的异常处理方法
如果没有则调用全局的异常处理方法

posted @ 2020-08-20 00:13  岁月染过的梦  阅读(158)  评论(0)    收藏  举报