[JAVA] Spring Boot-Ausnahmebehandlung

Spring Boot-Ausnahmebehandlung

Überblick

In SpringBoot können Ausnahmen mit mehreren Methoden behandelt werden, z. B. Ausnahmebehandlung mit der SpringMVC-Funktion und Ausnahmebehandlung mit der AutoConfiguration und dem integrierten Server von SpringBoot. Obwohl dies in Official Reference angegeben ist, sind der Bereich und der Mechanismus, die gehandhabt werden können, etwas schwer zu verstehen. Also werde ich die wichtigsten Methoden zusammenfassen.

Ausnahmebehandlungsmethode

Aufführen

Funktionsname Schicht
HandlerExceptionResolver SpringMVC
ErrorPage SpringBoot
ErrorController SpringBoot

HandlerExcepitonResolver HandlerExceptionResolver ist eine Ausnahmebehandlungsmethode, die die Funktionen von Spring MVC verwendet. Da die SpringMVC-Funktion verwendet wird, kann sie nicht behandelt werden, wenn in Filter oder Ansicht eine Ausnahme auftritt.

Ein schematisches Diagramm der Handhabung ist unten gezeigt. image.png

Standardmäßig verfügt HandlerExceptionResolver über mehrere unten gezeigte Implementierungsklassen. In der folgenden Tabelle gibt enable / disable an, ob es in den Standardeinstellungen von Spring Boot aktiviert oder deaktiviert ist, und der oben stehende ExceptionResolver hat Priorität.

Name der Klasse Wirksamkeit/Ungültig Funktion
ExceptionHandlerExceptionResolver Wirksamkeit @Die Ausnahmebehandlung wird von der Methode ausgeführt, der ExceptionHandler zugewiesen ist.
ResponseStatusExceptionResolver Wirksamkeit @Handle, wenn eine Ausnahmeklasse mit ResponseStatus generiert wird
DefaultHandlerExceptionResolver Wirksamkeit Behandelt in Spring MVC definierte Ausnahmeklassen
SimpleMappingExceptionResolver Ungültig Ordnen Sie Ausnahmeklassen und Ansichten direkt zu

Das Folgende zeigt die Ausnahmebehandlungsmethode des orthodoxsten "ExceptionHandlerExceptionResolver".

Behandlung durch ExceptionHandlerExceptionResolver

Wenn eine Ausnahme auftritt, wird die Methode mit der Annotation @ExceptionHandler, zu der die Metainformationen der aufgetretenen Ausnahmeklasse hinzugefügt werden, gescannt und die Verarbeitung übertragen.

Die Methode mit @ExceptionHandler kann in der Klasse mit @Controller oder @ControllerAdvice wie unten gezeigt definiert werden.

ThrowExceptionController.java


@Controller
@RequestMapping("web")
public class ThrowExceptionController {
	
	@GetMapping("original")
	public void throwOriginalException() {
		throw new OriginalWebException("thrown in ThrowExceptionController");

	}
	
	@ExceptionHandler(OriginalWebException.class)
	public String handleOriginalWebException(OriginalWebException exception) {
		return "OriginalWebException.html";
	}

}

TransverseExceptionHandler.java


@ControllerAdvice
public class ThrowExceptionController {
	
	@ExceptionHandler(OriginalWebException.class)
	public String handleOriginalWebException(OriginalWebException exception) {
		return "OriginalWebException.html";
	}

}

Im Fall von @Controller ist die Ausnahmebehandlung nur für Ausnahmen möglich, die im selben Controller auftreten. Im Fall von @ControllerAdvice können jedoch alle Controller auf der ganzen Linie behandelt werden.

Wenn sowohl @Controller als auch @ControllerAdvice verarbeitet werden können, hat die für @Controller angegebene Priorität.

ErrorPage

Die ErrorPage in SpringBoot entspricht fast dem ErrorPage-Element, das in der herkömmlichen SpringFW Web.xml definiert ist.

ErrorPage ordnet den Statuscode oder die Ausnahmeklasse dem Pfad zu, damit er verarbeitet werden kann. Ein schematisches Diagramm ist unten gezeigt. image.png

Das Registrieren von ErrorPage kann durch Erstellen einer Implementierungsklasse von ErrorPageRegistrar erfolgen (siehe unten).

AddErrorPage.java



@Configuration
public class AddErrorPage implements ErrorPageRegistrar {

	@Override
	public void registerErrorPages(ErrorPageRegistry registry) {
		registry.addErrorPages(new ErrorPage(exception, path));

        // new ErrorPage(HttpStatusCode, path)Aber möglich
	}
}

ErrorController ErrorController ist eine von Spring Boot bereitgestellte Ausnahmebehandlungsmethode und die am häufigsten verwendete Methode zur Ausnahmebehandlung in Spring Boot. Ein schematisches Diagramm ist unten gezeigt. image.png

Wenn die in der Spring Boot-Anwendung auftretenden Ausnahmen nicht behandelt werden, sollten sie alle von der oben beschriebenen ErrorPage-Funktion an den Pfad / error gesendet werden. Standardmäßig wird / error der Klasse BasicErrorController zugeordnet und dort behandelt.

In BasicErrorController gibt die Behandlung je nach Anforderungsheader HTML oder JSON zurück. Im Fall von HTML wird "WhiteLabelErrorPage" zurückgegeben, und der zurückgegebene Inhalt wird durch "ErrorAttributes" angegeben. Im Fall von JSON wird ErrorAttributes zurückgegeben.

Erstellen Sie eine Implementierungsklasse von "ErrorController", um die Behandlungsmethode durch "ErrorController" anzupassen. Wenn Sie den zurückgegebenen Inhalt anpassen möchten, implementieren Sie außerdem die Klasse "ErrorAttributes".

Zusammenfassung

Die Ausnahmebehandlung in der SpringBoot-Anwendung verwendet grundsätzlich "ErrorController". Wenn Sie eine feinere Behandlung durchführen möchten, verwenden Sie "HandlerExceptionResolver".

Recommended Posts

Spring Boot-Ausnahmebehandlung
Ausnahmebehandlung
Ausnahmebehandlung Ausnahme
Java-Ausnahmebehandlung?
Informationen zur Ausnahmebehandlung
Behandlung von Ruby-Ausnahmen
Fordern Sie Spring Boot heraus
Ruby-Ausnahmebehandlung
[Java] Ausnahmebehandlung
Spring Boot Form
☾ Java / Ausnahmebehandlung
Informationen zur Behandlung von Java-Ausnahmen
Spring Boot Denken Sie daran
Behandlung von Java-Ausnahmen
gae + frühlingsstiefel
SPRING BOOT Lernaufzeichnung 01
Frühlingsstiefel + Heroku Postgres
Informationen zur Behandlung von Ruby-Ausnahmen
Schreiben von Frühlingsstiefel-Memos (1)
Erster Frühlingsstiefel (DI)
Spring Boot2 Spickzettel
Spring Boot Servlet-Zuordnung
Spring Boot Entwicklung-Entwicklungsumgebung-
Spring Boot-Lernverfahren
Spring Boot lernen [Anfang]
Schreiben von Spring Boot-Memos (2)
Spring Boot 2.2 Dokumentzusammenfassung
[Spring Boot] DataSourceProperties $ DataSourceBeanCreationException
Spring Boot 2.3 Verfügbarkeit von Anwendungen
Spring Boot Tutorials Themen
Mit Spring Boot herunterladen
Klassen, die eine Ausnahmebehandlung erfordern
[Spring Boot] Umgebungskonstruktion (macOS)
Legen Sie den Kontextparameter in Spring Boot fest
Versuchen Sie Spring Boot von 0 bis 100.
Generieren Sie mit Spring Boot einen Barcode
Hallo Welt mit Spring Boot
Javas erste Ausnahmebehandlung (Denkmal)
Spring Boot unter Microsoft Azure
Implementieren Sie GraphQL mit Spring Boot
[Java] Praxis der Ausnahmebehandlung [Ausnahme]
[Spring] Controller-Ausnahmeausgabetest
Beginnen Sie mit Spring Boot
[Java] Informationen zur Behandlung von Try-Catch-Ausnahmen
Hallo Welt mit Spring Boot!
Spring Boot 2 Multiprojekt mit Gradle
[Ruby] Ausnahmebehandlung in Funktionen
[Spring Boot] Erstellung von Webanwendungen
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Spring Boot Hot Swapping-Einstellungen
[Java] Thymeleaf Basic (Spring Boot)
Verwendungsregeln für die Behandlung von Java-Ausnahmen
Einführung in Spring Boot ~ ~ DI ~
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Einführung in Spring Boot ② ~ AOP ~
CICS-Java-Anwendung ausführen- (4) Spring Boot-App
Spring Boot beginnend mit Docker
Spring Boot + Springfox Springfox-Boot-Starter 3.0.0 Verwendung