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@EnableAsyncpublic class AsyncConfig implements AsyncConfigurer {@Overridepublic 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.