0 Tage Serie
java / intermediate
Snippet

Globale Behandlung unbehandelter Ausnahmen in asynchronen Spring-Aufgaben

Mit @Async annotierte Methoden mit Rückgabetyp void können Ausnahmen nicht direkt an den aufrufenden Thread weitergeben. Durch die Implementierung von AsyncConfigurer kann ein AsyncUncaughtExceptionHandler konfiguriert werden, um unbehandelte Fehler in Hintergrund-Threads abzufangen.

snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
@Configuration
@EnableAsync
public class AsyncConfig implements AsyncConfigurer {
@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return (throwable, method, params) -> {
System.err.printf("Async error in %s with params %s: %s%n",
method.getName(), Arrays.toString(params), throwable.getMessage());
};
}
}
spring
Erklärung
1
public class AsyncConfig implements AsyncConfigurer
Implementiert die Spring-Schnittstelle zur Anpassung des asynchronen Ausführungsverhaltens.
2
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler()
Überschreibt die Factory-Methode, um einen benutzerdefinierten Handler für Ausnahmen aus void-Async-Methoden bereitzustellen.
3
return (throwable, method, params) -> {
Definiert ein Lambda, das dem funktionalen Interface entspricht, um Ausnahme, aufgerufene Methode und Argumente zu erfassen.