SpringMVC学习笔记(五)数据传输协议异常处理

数据传输协议

根据需要定义返回值类型

image-20230313085916515
image-20230313085934683

异常处理

各个层级都可能出现异常,异常处理代码写在哪一层——所有异常均抛出到表现层处理——使用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.自定义异常

image-20230313170816740

2.定义异常编码

image-20230313170829829

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

image-20230313170900370

4.拦截处理异常⭐

image-20230313170933488

⭐注意:

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注