Bei der Entwicklung von Webanwendungen kommt es sehr häufig zu Fehlern bei der Anfrageverarbeitung. Zu diesem Zeitpunkt ist eine einheitliche Ausnahmebehandlung erforderlich. In diesem Artikel werden hauptsächlich relevante Informationen zur Implementierung einer einheitlichen Ausnahmebehandlung vorgestellt.
Spring Boot verfügt standardmäßig über eine Fehlerzuordnung, diese Fehlerseite ist jedoch nicht sehr benutzerfreundlich.
Einheitliche Ausnahmebehandlung
Definieren Sie eine Klasse für die einheitliche Ausnahmebehandlung, indem Sie @ControllerAdvice verwenden, anstatt sie einzeln in jedem Controller zu definieren.
@ExceptionHandler wird verwendet, um den Funktionstyp für die Funktion zu definieren und schließlich das Ausnahmeobjekt und die Anforderungs-URL der URL zuzuordnen.
@ControllerAdvice class ExceptionTranslator { public static final String DEFAULT_ERROR_VIEW = "error"; @ExceptionHandler(value = Exception.class) public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception { ModelAndView mav = new ModelAndView(); mav.addObject("exception", e); mav.addObject("url", req.getRequestURL()); mav.setViewName(DEFAULT_ERROR_VIEW); return mav; } }
Implementieren Sie die Seitenanzeige „error.html“
Erstellen Sie „error.html“ im Vorlagenverzeichnis.
Zum Beispiel:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8" /> <title>统一异常处理</title> </head> <body> <h1>Error Handler</h1> <p th:text="${url}"></p> <p th:text="${exception.message}"></p> </body> </html>
Rückgabe im Json-Format
Nur Durch Hinzufügen von @ResponseBody nach @ExceptionHandler kann der Inhalt der Verarbeitungsfunktionsrückgabe in das JSON-Format
konvertiert werden, um ein JSON-Rückgabeobjekt zu erstellen, z. B.:
public class ErrorDTO implements Serializable { private static final long serialVersionUID = 1L; private final String message; private final String description; private List<FieldErrorDTO> fieldErrors; //getter和setter省略 }
Ausnahmebehandlung kann für die angegebene Ausnahme hinzugefügt werden
@ExceptionHandler(ConcurrencyFailureException.class) @ResponseStatus(HttpStatus.CONFLICT) @ResponseBody public ErrorDTO processConcurencyError(ConcurrencyFailureException ex) { return new ErrorDTO(ErrorConstants.ERR_CONCURRENCY_FAILURE); }
ErrorConstants.ERR_CONCURRENCY_FAILURE ist eine definierte Ausnahmemeldung.
Zusammenfassung
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des Beispielcodes für die einheitliche Spring Boot-Ausnahmebehandlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!