数据传输协议
根据需要定义返回值类型


异常处理
各个层级都可能出现异常,异常处理代码写在哪一层——所有异常均抛出到表现层处理——使用AOP
spring提供了异常处理器:
package com.yuan.controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
//声名这是一个异常处理器类,该注解自带@ResponseBody和@Component注解
@RestControllerAdvice
public class ProjectExceptionAdvice {
//定义该方法处理哪一种异常
@ExceptionHandler(Exception.class)
public Result doException(Exception ex){
System.out.println(ex.getMessage());
return new Result(123,null,"there is an exception!");
}
}
项目异常
- 业务异常
- 系统异常
- 其他异常
1.自定义异常

2.定义异常编码

3.触发异常(手动示例)

4.拦截处理异常⭐

⭐注意:
因为自定义异常继承自RuntimeException
,这是一个运行时异常,不处理的话不会导致程序异常(其他异常类型必须捕获且处理,所以需要在每一个可能出现异常的地方写好捕获和处理代码,否则就会出错。这也是为什么这里继承RuntimeException的原因),而是自动一级一级向上抛,只要没有处理异常,就继续往上抛,直到最后被jvm捕获并处理。在这里使用@RestCoontrollerAdvice
就是在全局最上层拦截异常,即在异常被jvm捕获前拦截异常并处理。