Springboot clase de excepción personalizada integrada (combate empresarial)

Una nota

  1. Utilizará la enumeración
  2. Familiarizado con las ideas de programación orientadas a aspectos.
  3. Familiarizado con la enumeración
  4. Familiarizado con las excepciones
  5. Comprender los conocimientos básicos de springboot
  6. Familiarizado con la construcción básica del proyecto, omita este paso en la presentación
  7. springboot 2.0, jdk1.8, idea de herramienta de compilación

Dos clases de excepción personalizadas

El autor solo puede decir que el código es sencillo y conciso.

2.1 Introducir dependencias relevantes en el archivo pom

 <dependencies>
        <!-- web启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.18</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
复制代码

2.2 Usar enumeración para personalizar mensajes de clase de excepción

/*
 * @Author lsc
 * @Description  <p>异常消息 </p>
 * @Date 2019/10/9 20:28
 * @Param
 * @return
 **/
@AllArgsConstructor//全参构造
@NoArgsConstructor//空参构造
public enum CodeMsg {

    SUCESS(200,"sucess"),
    SERVER_ERROR(500,"服务端异常"),
    Request_Error(404,"请求异常");

    // 错误消息码
    private Integer code;
    // 错误消息提示
    private String msg;

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

复制代码

2.3 Integración de RuntimeException con excepciones personalizadas

/**
 * @Author lsc
 * @Description <p>自定义通用异常 </p>
 * @Date 2019/10/9 20:39
 * @Version 1.0
 */

@NoArgsConstructor
@AllArgsConstructor
@Data
public class CommonException extends RuntimeException {

    // 序列化号
    private static final long serialVersionUID = 132719492019L;

    // 引入自定义异常消息
    private CodeMsg codeMsg;


}
复制代码

2.4 Escribir página para devolver la clase de entidad

/**
 * @Author lsc
 * @Description <p> 返回的页面 </p>
 * @Date 2019/10/9 20:35
 * @Version 1.0
 */

@Data//set get 等方法
@AllArgsConstructor
@NoArgsConstructor
public class ResultPage<T> {


    // 状态码
    private Integer code;
    // 消息提示
    private String msg;
    // 存放的数据
    private T data;


    ResultPage(Integer code,String msg) {
        this.code=code;
        this.msg=msg;
        this.data=data;
    }

    // 成功的时候调用
    public static <T> ResultPage<T> sucess(CodeMsg codeMsg,T data){
        return new ResultPage<T>(codeMsg.getCode(),codeMsg.getMsg(),data);
    }

    //失败的时候调用
    public static <T> ResultPage<T> error(CodeMsg codeMsg){
        return new ResultPage<T>(codeMsg.getCode(),codeMsg.getMsg());
    }
}

复制代码

2.5 Captura de excepciones

/*
 * @Author lsc
 * @Description  <p> 异常捕获</p>
 * @Date 2019/10/9 20:42
 * @Param
 * @return
 **/
@ControllerAdvice
@Configuration
public class CommonExceptionHandler {


    // 捕获CommonException异常
    @ExceptionHandler(value = CommonException.class)
    @ResponseBody
    public ResponseEntity<ResultPage> CommonExceptionHandler(CommonException e){
        // 获得异常消息
        CodeMsg codeMsg = e.getCodeMsg();
        // 设置错误消息页面返回
        return ResponseEntity.status(HttpStatus.OK).body(ResultPage.error(codeMsg));
    }

    // 下面还可以自定义捕获其他异常比如 非法参数异常 运算异常 等等.......

}

复制代码

2.6 capa de controlador

/**
 * @Author lsc
 * @Description <p> 控制层</p>
 * @Date 2019/10/9 20:57
 * @Version 1.0
 */
@RestController
public class YouKu1327Controller {


    @GetMapping("/youku1327/api/excetion")
    public ResultPage<Object> testException(){
        // 示范 抛出自定义异常
        throw new CommonException(CodeMsg.Request_Error);
    }
    /*
     * @Author lsc
     * @Description  <p>成功消息 </p>
     * @Date 2019/10/9 21:21
     * @Param []
     * @return org.springframework.http.ResponseEntity
     **/
    @GetMapping("/youku1327/api/sucess")
    public ResponseEntity testSucess(){
        ArrayList<Object> list = new ArrayList<>();
        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("youku1327","欢迎关注博客和微信号");
        list.add(hashMap);
        return ResponseEntity.ok().body(ResultPage.sucess(CodeMsg.SUCESS,list));
    }
}
复制代码

2.7 Iniciar clase

/**
 * @Author lsc
 * @Description <p> 自定义异常启动类</p>
 * @Date 2019/10/9 20:56
 * @Version 1.0
 */
@SpringBootApplication
public class ExceptionApplication {

    public static void main(String[] args) {
        SpringApplication.run(ExceptionApplication.class,args);
    }
}
复制代码

Tres comienzan la prueba de solicitud de página del proyecto

3.1 Prueba anormal

Inserte la descripción de la imagen aquí

3.2 Prueba exitosa

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin juejin.im/post/5e97a491e51d4546ec1cc1ec
Recomendado
Clasificación