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处的逻辑

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

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

相关文章推荐

Spring异常处理 ExceptionHandler的使用

@ExceptionHandler注解: 当一个Controller中有方法加了@ExceptionHandler之后,这个Controller其他方法中没有捕获的异常就会以参数的形式传入加了@Ex...

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

@Restcontroller登场spring从4.0开始引入了@Restcontroller,这是对REST的支持,他可以帮我们去掉@ResponseBody这个 所以原本这样的代码,@Cont...

统一异常处理@ExceptionHandler

有时候我们想统一处理一个Controller中抛出的异常怎么搞呢? 直接在Controller里面加上用@ExceptionHandler标注一个处理异常的方法像下面这样子 @ExceptionHa...

spring_exception异常处理

  • 2015-02-05 15:40
  • 4.90MB
  • 下载

spring boot 异常处理方案

  • 2017-08-28 15:33
  • 36KB
  • 下载

spring boot / cloud (二) 规范响应格式以及统一异常处理

spring boot / cloud (二) 规范响应格式以及统一异常处理前言为什么规范响应格式? 我认为,采用预先约定好的数据格式,将返回数据(无论是正常的还是异常的)规范起来,有助于提高团队...

spring boot优化异常处理

做Web项目应用的时候,请求处理过程中发生错误是非常常见的情况。Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展...

spring mvc 发送邮件中部分异常处理

java.lang.NoClassDefFoundError: com/sun/mail/util/MessageRemovedIOException com.sun.mail.smtp.SMTPSe...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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