Lettore di lunga data, richiedente per la prima volta qui. Ho un servizio che scrive dati in un database in lotti. Contiene un buffer che viene guardato da un thread separato. Ogni volta che il buffer raggiunge una determinata dimensione o un certo periodo di tempo è trascorso dall'ultima scrittura, il thread scrive i dati nel DB.
In Java, ogni volta che c'è un'eccezione nel thread del monitor, muore silenziosamente e non fa mai più nulla.
Esiste una best practice consolidata sulla gestione delle eccezioni in tali thread? Il thread deve essere in esecuzione in ogni momento e dovrebbe stampare un'eccezione nel log se si verifica uno.
Ci sono alcune potenziali soluzioni a questo che mi vengono in mente:
- Avvolgi gli interi metodi nei blocchi try / catch, cattura tutte le eccezioni e chiedi a un Logger di stampare i messaggi. (Troppo brutto per i miei gusti)
- Registrare un gestore di eccezioni non rilevate e gestire le eccezioni presenti. (Forse?)
- Non usare una Discussione, ma un Callable o un Runnable. (Non sono sicuro che sia adatto a thread sempre attivi)
- Qualcos'altro?