一、单个controller范围的异常处理
package com.xxx.secondboot.web;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.xxx.secondboot.exception.MyExceptionResponse;
import io.swagger.annotations.Api;
@Api("测试controllerAdvice和全局异常处理")
@RestController
@RequestMapping("/advice1")
public class AdviceController {
@RequestMapping(value = "/test1", method = RequestMethod.GET)
public String test1() {
throw new RuntimeException("advice1 - exception1");
}
@RequestMapping(value = "/test2", method = RequestMethod.GET)
public String test2() {
throw new RuntimeException("advice1 - exception2");
}
@ExceptionHandler(RuntimeException.class)
public MyExceptionResponse exceptionHandler() {
MyExceptionResponse resp = new MyExceptionResponse();
resp.setCode(300);
resp.setMsg("exception-Handler");
return resp;
}
}
说明:
二、全部controller范围内起作用的异常处理(全局异常处理)
1、全局异常处理类
package com.xxx.secondboot.web;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.xxx.secondboot.exception.MyExceptionResponse;
import com.xxx.secondboot.exception.MyRuntimeException;
//@ControllerAdvice(annotations=RestController.class)
//@ControllerAdvice(basePackages={"com.xxx","com.ooo"})
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(RuntimeException.class)
// @ExceptionHandler(value={RuntimeException.class,MyRuntimeException.class})
// @ExceptionHandler//处理所有异常
@ResponseBody //在返回自定义相应类的情况下必须有,这是@ControllerAdvice注解的规定
public MyExceptionResponse exceptionHandler(RuntimeException e, HttpServletResponse response) {
MyExceptionResponse resp = new MyExceptionResponse();
resp.setCode(300);
resp.setMsg("exception-Handler");
// response.setStatus(600);
return resp;
}
}
说明:
2、controller
package com.xxx.secondboot.web;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
@Api("测试controllerAdvice和全局异常处理")
@RestController
@RequestMapping("/advice1")
public class AdviceController {
@RequestMapping(value = "/test1", method = RequestMethod.GET)
public String test1() {
throw new RuntimeException("advice1 - exception1");
}
@RequestMapping(value = "/test2", method = RequestMethod.GET)
public String test2() {
throw new RuntimeException("advice1 - exception2");
}
// @ExceptionHandler(RuntimeException.class)
// public MyExceptionResponse exceptionHandler() {
// MyExceptionResponse resp = new MyExceptionResponse();
// resp.setCode(300);
// resp.setMsg("exception-Handler");
// return resp;
// }
}
注意:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。