spring boot 全局异常处理

一、简介

请求过来时先经过前端控制器,前端控制器将请求交给Controller,Controller 调用Service,Service调用Dao,当Dao处理完请求之后,将处理结果返回给Service,Service再将返回结果返回给Controller,Controller再将返回结果返回给前端控制器。同理,如果出现异常,最终都会传到前端控制器。我们便在前端控制器对异常进行统一处理

通常情况下我们用try…catch… 对异常进行捕捉处理,可是在实际项目中随时的进行异常捕捉,会造成代码重复和繁杂,我们希望代码中只有业务相关的操作,所有的异常我们单独设立一个类来处理它。

首先,我们在可能发生异常的方法,全部throw出来,即dao抛给service、service给controller、controller抛给前端控制器;

然后由前端控制器调用 全局异常处理器 对异常进行统一处理。

二、流程

@ControlerAdvice 用来处理全局数据,是@Controller 的增强版。全局异常处理也可以使用该注解配合@ExceptionHandler 使用。

1.GlobalExceptionHandler.java 处理全局异常

package com.vincent;

import java.util.Arrays;

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

@ControllerAdvice
public class GlobalExceptionHandler {
	@ExceptionHandler
	public void exceptionHandler(Exception ex) {
		System.out.println(Arrays.toString(ex.getStackTrace()));
	}
}

应用在遇到异常时将会调用该异常处理方法,该方法是前端控制器(DispatcherServlet) 调用,故可以返回json 数据、ModelAndView,使用HttpServletRequest、HttpServletResponse 作为方法参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值