首先,
1.自定义异常类
@Data
public class LyException extends RuntimeException{
private ExceptinEnums exceptinEnums;
}
通过枚举的方式创建异常信息
@Getter
@NoArgsConstructor
@AllArgsConstructor
public enum ExceptinEnums{
PRICE_NOT_NULL(400,"价格不能为空"),
AGE_NOT_NULL(400,"年龄不能为空");
private int code;
private String msg;
}
创建AOP切面,spring的controller层切面,使用@ControllerAdvice注解
@ControllerAdvice
public class CommonExcetionHandler {
@ExceptionHandler(LyException.class)
public ResponseEntity<ExceptionResult> handleException(LyException e){
ExceptinEnums exceptinEnums = e.getExceptinEnums();
ExceptionResult exceptionResult = new ExceptionResult(exceptinEnums);
return ResponseEntity.status(exceptinEnums.getCode()).body(exceptionResult);
}
}
测试controller层
@RestController
@RequestMapping("item")
public class ItemController {
// @Autowired
// private Itemservice itemservice;
@PostMapping
public ResponseEntity<Item> saveItem(Item item){
throw new LyException(ExceptinEnums.PRICE_NOT_NULL);
}
}
当Controller层抛出异常,通过枚举获得异常(最好是在数据库配置异常表,获得异常信息),
AOP切面处理异常,将异常封装成自定义的信息发送到前端。