企业实战之spring增强器实现《全局异常处理器》

本文介绍了如何使用@ControllerAdvice注解实现Spring的全局异常处理器,通过处理不同类型的异常,如参数错误、运行时异常和自定义业务异常,返回相应的HTTP状态码。同时,强调了在处理异常时应注意的安全性和日志记录的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

之前我们分享了对于spring项目的controller层,我们该如何简写我们的代码逻辑,所谓的简写就是 简化日志打印、参数校验、异常捕获和响应结果的封装这几个步骤,让我们把更多的时间留给我们更关注的业务逻辑,这里给一个之前的文章链接,读了过后可能你会更好的理解该篇文章的意义《Api写法第三篇》
废话不多说了,我们看一下我们今天的主角儿,@ControllerAdvice注解,这个是spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强。今天我们就是使用它,来全局捕获系统中的异常,并对接口返回的的HTTP状态码做控制,下面来看代码的实现

代码实现

package com.zhuma.demo.handler;

import javax.servlet.http.HttpServletRequest;
import javax.validation.ConstraintViolationException;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.validation.BindException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;

import com.zhuma.demo.comm.handler.BaseAggregationLayerGlobalExceptionHandler;
import com.zhuma.demo.comm.result.Result;
import com.zhuma.demo.exception.BusinessException;

/**
 * @desc 统一异常处理器
 * 
 * @author zhumaer
 * @since 8/31/2017 3:00 PM
 */
@RestController
@ControllerAdvice
public class GlobalExceptionHandler extends BaseAggregationLayerGlobalExceptionHandler {
   

	/* 处理400类异常 */
	@ResponseStatus(HttpStatus.BAD_REQUEST)
	@ExceptionHandler(ConstraintViolationException.class)
	public Result handleConstraintViolationException(ConstraintViolationException e, HttpServletRequest request) {
   
		return super.handleConstraintViolationException(e, request);
	}

	@ResponseStatus(HttpStatus.BAD_REQUEST)
	@Excepti
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值