所使用的注解
@ControllerAdvice:表示当前类为全局异常配置类
@ExceptionHandle:限制处理异常的范围
@ResponseBody:不跳转界面,以json格式返回数据
全局异常和指定处理实例
@ControllerAdvice
public class GlobalExceptionHandle {
//修改ExceptionHandler的值,可以实现指定异常处理
@ExceptionHandler(Exception.class)
@ResponseBody
public R error(Exception e) {
e.printStackTrace();
return R.error();
}
}
自定义异常处理
创建一个自定义异常类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class GuliException extends RuntimeException {
private Integer code;
private String msg;
}
设置自定义异常
@ExceptionHandler(GuliException.class)
@ResponseBody
public R error(GuliException e) {
e.printStackTrace();
return R.error().code(e.getCode()).message(e.getMsg());
}
如果不生效,极有可能是GlobalExceptionHandle没有被加入容器
解决方案(加入扫描路径):
@SpringBootApplication(scanBasePackages = {"com.mick.file", "com.mick.gulimall.common"})
@EnableDiscoveryClient
@EnableFeignClients
public class GulimallFileApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallFileApplication.class, args);
}
}