Attention : cela peut ne pas répondre à vos besoins si vous devez utiliser le mécanisme d'exception.
Si je comprends bien, vous n'avez pas besoin que l'exception soit vérifiée (vous avez accepté la réponse suggérant une exception non vérifiée). Un simple modèle d'écouteur serait-il plus approprié ?
L'écouteur pourrait se trouver dans le fil d'exécution parent et, lorsque l'exception vérifiée est détectée dans le fil d'exécution enfant, il suffirait de notifier l'écouteur.
Cela signifie que vous avez un moyen d'exposer que cela se produira (par le biais de méthodes publiques), et que vous serez en mesure de transmettre plus d'informations qu'une exception ne le permet. Mais cela signifie qu'il y aura un couplage (bien que lâche) entre le thread parent et le thread enfant. Cela dépend de votre situation spécifique et de l'avantage qu'il y aurait à envelopper l'exception vérifiée avec une exception non vérifiée.
Voici un exemple simple (un peu de code emprunté à une autre réponse) :
public class ThingRunnable implements Runnable {
private SomeListenerType listener;
// assign listener somewhere
public void run() {
try {
while(iHaveMorePackets()) {
doStuffWithPacket();
}
} catch(Exception e) {
listener.notifyThatDarnedExceptionHappened(...);
}
}
}
Le couplage provient du fait qu'un objet dans le thread parent doit être de type SomeListenerType
.
1 votes
Jetez un coup d'oeil à la réponse suivante : [Comment attraper une exception depuis un thread][1] [1] : stackoverflow.com/questions/6546193/