您的位置:首页 > 编程语言 > Java开发

SpringBoot 统一异常处理

2018-11-21 21:11 645 查看

一般在SpringBoot中需要处理的异常有下面几种类型:

  1. 404
  2. 500
  3. 业务异常(JSON数据)

404 一般由默认的error页面处理

原理:由于SpringBoot中默认设置是由templates下面的error来处理404


而500则由@ControllerAdvice(控制器增强)处理

原理:@ControllerAdvice注解是统一处理贴有@Controller注解的控制器抛出的异常,这个相当于控制器的切面

具体代码如下:

import cn.wolfcode.p2p.base.util.JSONResult;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
* @所属项目 :   springboot-ssm
* @类的描述 :   异常统一处理
* @类的作者 :   JOHN
* @创建时间 :   2018年11月21日 10时43分
*/
@ControllerAdvice
public class ErrorControllerAdvice {

//只会针对指定的异常类型做处理
@ExceptionHandler(CustomerException.class)
@ResponseBody
public JSONResult handleJSONException(Exception ex, Model model){

JSONResult jsonResult = new JSONResult();

jsonResult.mark(ex.getMessage());

return jsonResult;
}

//只会针对指定的异常类型做处理
@ExceptionHandler(RuntimeException.class)
public String handle(Exception ex,Model model){

model.addAttribute("ex",ex.getMessage());

return "public/error/500";
}

}

至于抛出的JSON格式的异常,上面已经给出

但是可以看到的是:由于JSON格式的异常一般都是业务异常,所以:

还需要定义一个业务异常,业务异常如下:

/**
* @所属项目 :   springboot-ssm
* @类的描述 :   客户异常
* @类的作者 :   JOHN
* @创建时间 :   2018年11月21日 10时56分
* @说明     :   专门提供给用户的异常信息
*/

public class CustomerException extends RuntimeException{

public CustomerException(String message) {

super(message);
}

public CustomerException(String message, Throwable cause) {

super(message,cause);
}

}
阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: