springboot处理全局异常

@ControllerAdvice
public class GlobalExceptionHandler {
	private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
	
	/**
	 * 处理自定义的业务异常
	 * @param req
	 * @param e
	 * @return
	 */
    @ExceptionHandler(value = BizException.class)  
    @ResponseBody  
	public  ResultBody bizExceptionHandler(HttpServletRequest req, BizException e){
    	logger.error("发生业务异常!原因是:{}",e.getErrorMsg());
    	return ResultBody.error(e.getErrorCode(),e.getErrorMsg());
    }

	/**
	 * 处理空指针的异常
	 * @param req
	 * @param e
	 * @return
	 */
	@ExceptionHandler(value =NullPointerException.class)
	@ResponseBody
	public ResultBody exceptionHandler(HttpServletRequest req, NullPointerException e){
		logger.error("发生空指针异常!原因是:",e);
		return ResultBody.error(CommonEnum.BODY_NOT_MATCH);
	}


    /**
        * 处理其他异常
     * @param req
     * @param e
     * @return
     */
    @ExceptionHandler(value =Exception.class)
	@ResponseBody
	public ResultBody exceptionHandler(HttpServletRequest req, Exception e){
    	logger.error("未知异常!原因是:",e);
       	return ResultBody.error(CommonEnum.INTERNAL_SERVER_ERROR);
    }
}
### Spring Boot WebSocket 全局异常处理实现 在构建基于 WebSocket 的应用时,确保能够优雅地处理可能出现的各种异常至关重要。通过定义全局异常处理器,可以捕获并响应来自 WebSocket 连接中的任何未处理异常。 为了实现在 Spring Boot 中针对 WebSocket 的全局异常处理机制,通常会创建一个实现了 `GlobalExceptionHandler` 或者自定义注解的方式来进行统一管理。具体来说: 对于 WebSocket 配置类而言,可以通过继承 `WebSocketMessageBrokerConfigurerAdapter` 并重写相应的方法来配置消息代理以及设置拦截器用于捕捉异常情况[^1]。 下面是一个简单的例子展示如何利用 @ControllerAdvice 注解配合 ExceptionHandler 来达到目的: ```java import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.socket.CloseStatus; @ControllerAdvice public class GlobalWsExceptionHandler { @MessageExceptionHandler(Exception.class) public void handleException(Throwable ex, SimpMessageHeaderAccessor headerAccessor){ System.out.println("Error occurred during processing message:" +ex.getMessage()); // 可以在这里记录日志或者发送错误通知给客户端 } } ``` 此外,在实际项目开发过程中还可以考虑使用 AOP (面向切面编程) 技术进一步增强系统的健壮性和可维护性。例如,可以在适当的地方加入环绕通知(Around Advice),从而更加灵活地控制整个请求/响应流程[^2]。 当涉及到 XML 方式的组件扫描时,则需注意确保相关包路径被正确指定以便于自动发现这些异常处理逻辑所在的 Bean 实例化对象[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值