spring基于@ExceptionHandler的异常处理

原创 2016年05月31日 22:09:42

定义一个基础的controller 类,其他的都继承于他


@Controller
public class GenericController {
	private static final Logger LOGGER = LoggerFactory.getLogger(GenericController.class);

	
	@ExceptionHandler(CustomException.class)
	public void resolveCustomException(HttpServletRequest req, HttpServletResponse res, CustomException e)
			throws Exception {
		LOGGER.error(e.getMessage(), e);

		// 异步请求
		if (isAsyncRequest(req)) {
			res.setContentType("application/json");
			Writer.write(res, Ajax.buildErrorResult(e.getMessage()));
		}
		// 同步请求
		else {
			req.setAttribute("exception", Ajax.buildExceptionResult());
			req.getRequestDispatcher("/error/500.html").forward(req, res);
		}
	}
private boolean isAsyncRequest(HttpServletRequest request) {
	return request.getHeader("X-Requested-With") != null;

}
关于writer类

public class Writer {
	private static final Logger LOGGER = LoggerFactory.getLogger(Writer.class);

	private static final ObjectMapper MAPPER = new ObjectMapper();

	public static void write(HttpServletResponse res, Object object) {
		try {
			MAPPER.writeValue(res.getOutputStream(), object);
		} catch (IOException e) {
			LOGGER.error(e.getMessage(), e);
		}
	}

}


自定义业务异常

public class CustomException extends RuntimeException {
	private static final long serialVersionUID = 6666170142692714385L;

	public CustomException() {
		super();
	}

	public CustomException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
		super(message, cause, enableSuppression, writableStackTrace);
	}

	public CustomException(String message, Throwable cause) {
		super(message, cause);
	}

	public CustomException(String message) {
		super(message);
	}

	public CustomException(Throwable cause) {
		super(cause);
	}

}


然后程序抛出CustomException异常的地方都执行控制器里面 代码1处的逻辑

然后我们可以定义多种异常.

版权声明:本文为博主原创文章,未经博主允许不得转载。

5. 全局异常捕捉【从零开始学Spring Boot】

在一个项目中的异常我们我们都会统一进行处理的,那么如何进行统一进行处理呢? 新建一个类GlobalDefaultExceptionHandler, 在class注解上@ControllerAdvice...
  • linxingliang
  • linxingliang
  • 2016年06月04日 20:26
  • 4899

Spring Boot Web应用的异常处理

Web应用在处理请求时可能会出现多种错误,如请求参数不正确、URL不存在、请求方法错误、内部未知错误等。SpringMVC有多种异常处理方式,使用某种方式的判断标准是,你的异常是在请求处理的哪个阶段发...
  • tracker_w
  • tracker_w
  • 2016年04月07日 23:19
  • 7251

ajax和普通请求使用spring mvc在controller中的异常统一处理

ajax和普通请求使用spring mvc在controller中的异常统一处理
  • wenfeifang
  • wenfeifang
  • 2016年12月21日 16:33
  • 1910

Spring异常处理 ExceptionHandler的使用

@ExceptionHandler注解: 当一个Controller中有方法加了@ExceptionHandler之后,这个Controller其他方法中没有捕获的异常就会以参数的形式传入加了@Ex...
  • u010187242
  • u010187242
  • 2017年06月22日 16:19
  • 130

使用@RestController,@ExceptionHandler和@Valid,把检验和异常处理从主要业务逻辑里面抽离出来

@Restcontroller登场spring从4.0开始引入了@Restcontroller,这是对REST的支持,他可以帮我们去掉@ResponseBody这个 所以原本这样的代码,@Cont...
  • qq_34531925
  • qq_34531925
  • 2017年06月08日 10:44
  • 186

统一异常处理@ExceptionHandler

有时候我们想统一处理一个Controller中抛出的异常怎么搞呢? 直接在Controller里面加上用@ExceptionHandler标注一个处理异常的方法像下面这样子 @ExceptionHa...
  • liujia120103
  • liujia120103
  • 2017年07月14日 17:16
  • 2289

spring boot demo (包括异常处理 aop redis的整合)

  • 2017年10月31日 11:13
  • 41KB
  • 下载

spring boot 异常处理方案

  • 2017年08月28日 15:33
  • 36KB
  • 下载

spring_exception异常处理

  • 2015年02月05日 15:40
  • 4.9MB
  • 下载

iOS 异常捕捉及处理发送。ExceptionHandler.

  • 2016年07月27日 17:37
  • 93KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring基于@ExceptionHandler的异常处理
举报原因:
原因补充:

(最多只允许输入30个字)