标签:扫描 opera class message operation 查询 枚举 inf 异常类
1.
全局异常处理
在项目中所有的异常都经过一个方法出来;都通过一个方法捕获;
特殊异常处理
指定特殊的异常捕获;
自定义异常处理
这个异常不是系统中运行时的Bug, 而是根据业务自己定义的异常操作;
例如:用户对API进行非法的操作;
item = itemId = 1 / 100000
If(item == null){
New Throws(Exception().code(20002),message(“没有此商品”))
}
2.配置一个config,项目启动时扫描
@EnableTransactionManagement
@MapperScan("com.atguigu.manager.mapper")
@ComponentScan("com.atguigu.manager.exception")
@Configuration
public class AllConfig {
}
3.配置全局异常类
@ControllerAdvice
public class GlobalException {
/**
* 异常处理:捕获 Exception 异常的
* @param e
* @return
*/
@ExceptionHandler(Exception.class)
@ResponseBody
public R error(Exception e){
e.printStackTrace();
return R.error();
}
/**
* 除数不能为0异常
* @param e
* @return
*/
@ExceptionHandler(ArithmeticException.class)
@ResponseBody
public R errorArithmetic(ArithmeticException e){
e.printStackTrace();
return R.error().message("除数不能为0");
}
/**
* 自定义异常
* @param e
* @return
*/
@ExceptionHandler(PersonException.class)
@ResponseBody
public R errorArithmetic(PersonException e){
e.printStackTrace();
return R.error().message(e.getMessage()).code(e.getCode());
}
}
4.自定义异常
@Data
@ApiModel("自定义异常")
public class PersonException extends RuntimeException{
@ApiModelProperty(value = "状态码")
private Integer code;
/**
* 接受状态码和消息
* @param code
* @param message
*/
public PersonException(Integer code, String message) {
super(message);
this.code=code;
}
/**
* 接收枚举类型
* @param resultCodeEnum
*/
public PersonException(ResultCodeEnum resultCodeEnum) {
super(resultCodeEnum.getMessage());
this.code = resultCodeEnum.getCode();
}
}
5.测试异常方法
/*
* 查询方法
* */
@ApiOperation(value = "person1删除数据")
@ResponseBody
@GetMapping("/selectOnePerson/{id}")
public R selectOnePerson(@ApiParam(name="id", value = "personID", required = true) @PathVariable("id") Integer id) {
//int i= 1/0;
Person person = personServer.selectOne(id);
if(person ==null) {
throw new PersonException(200002,"此人物不存在");
}
return R.ok().data("person",person);
}
将 除数不能为0异常隐藏掉,则会被第一次捕获,抛未知错误异常
否则放开 i=1/0
隐藏 i =1/0
以上3种情况就测试完啦!
标签:扫描 opera class message operation 查询 枚举 inf 异常类
原文地址:https://www.cnblogs.com/liuyi13535496566/p/11627155.html