Heim  >  Artikel  >  Java  >  So implementieren Sie eine einheitliche Ausnahmebehandlung in SpringBoot

So implementieren Sie eine einheitliche Ausnahmebehandlung in SpringBoot

WBOY
WBOYnach vorne
2023-05-10 22:01:041152Durchsuche

Szenario: Für die Ausnahmebehandlung besteht unser ursprünglicher Ansatz darin, Ausnahmen im Allgemeinen auf der äußersten Ebene zu erfassen, z. B. im Controller wird den Code erheblich verbessern und die Generierung von redundantem Code reduzieren.

Benutzerdefinierte Ausnahmeklasse: Achten Sie darauf, von RuntimeException statt von Exception zu erben. Wenn Sie von Exception erben, wird die Spring-Transaktion nicht zurückgesetzt, wenn eine benutzerdefinierte Ausnahme ausgelöst wird.

@Controller
public class HelloController {
 
  private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
 
  @GetMapping(value = "/hello")
  @ResponseBody
  public Result hello() {
    try {
      //TODO 具体的逻辑省略……
    } catch (Exception e) {
      logger.error("hello接口异常={}", e);
      return ResultUtil.success(-1, "system error", null);
    }
    return ResultUtil.success(0, "success", null);
  }
}

Benutzerdefinierter einheitlicher Ausnahmehandler: die beiden kritischeren Kommentieren Sie @ControllerAdvice, @ExceptionHandler.

public class GlobalException extends RuntimeException {
 
  private Integer code; //因为我需要将异常信息也返回给接口中,所以添加code区分
 
  public GlobalException(Integer code,String message) {
    super(message);  //把自定义的message传递个异常父类
    this.code = code;
  }
 
  public Integer getCode() {
    return code;
  }
 
  public void setCode(Integer code) {
    this.code = code;
  }
}

Schreiben Sie eine Testklasse zum Testen

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine einheitliche Ausnahmebehandlung in SpringBoot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen