前言:
在某些业务场景,我们会在系统中针对某些业务抛出一个统一的自定义异常,然而springBoot为了方便我们能够对这些异常进行统一处理给我们提供了全局异常处理器的功能,其实也就是延用了springmvc的全局异常处理器,只是简化了配置而已。
好了,废话不多说,我们直接上代码吧
1,自定义异常类.
package com.renrengou.exception;
/**
* @author 彭伟
* @Date 2018/9/28 15:54
* 自定义权限异常
*/
public class GlobalException extends RuntimeException {
private Integer code;//异常码
public GlobalException(int code, String msg) {
super(msg);
this.code = code;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
}
2,定义全局异常处理器
package com.renrengou.exception;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author 彭伟
* @Date 2018/9/28 15:58
* 全局异常处理类
*/
@ControllerAdvice//组合注解,里面含有Component
public class GlobalDefultExceptionHandler {
@ExceptionHandler(RuntimeException.class)
@ResponseBody
public Object defultExcepitonHandler(HttpServletRequest request, HttpServletResponse response, Exception e) throws IOException {
e.printStackTrace();
if (e instanceof GlobalException) {
//自定义异常
GlobalException exception = (GlobalException) e;
response.sendRedirect(request.getContextPath()+"/noPriv.html");
return exception;
}
//系统异常
return e;
}
}
3,使用自定义异常
好了,自定义异常类,到全局异常处理器就算完成了,根据自己需求对业务进行扩展