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

So implementieren Sie eine einheitliche Ausnahmebehandlung in SpringBoot

WBOY
Freigeben: 2023-05-10 22:01:04
nach vorne
1183 Leute haben es durchsucht

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);
  }
}
Nach dem Login kopieren

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;
  }
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage