Предостережение: это может не соответствовать вашим потребностям, если вам нужно использовать механизм исключения.
Если я правильно вас понимаю, вам действительно не нужно исключение, которое нужно проверить (вы приняли ответ, предлагающий исключение без отметки), так что бы более простой пример прослушивания был более уместным?
Слушатель может жить в родительском потоке, и когда вы поймали проверенное исключение в дочернем потоке, вы можете просто уведомить слушателя.
Это означает, что у вас есть способ разоблачения того, что это произойдет (посредством общедоступных методов) и сможет передавать больше информации, чем это позволит исключение. Но это означает, что между родительским и дочерним потоком будет связь (пусть и свободная). В вашей конкретной ситуации будет зависеть от того, будет ли это иметь преимущество перед переносом проверенного исключения с неконтролируемой.
Вот простой пример (часть кода заимствована из другого ответа):
public class ThingRunnable implements Runnable {
private SomeListenerType listener;
// assign listener somewhere
public void run() {
try {
while(iHaveMorePackets()) {
doStuffWithPacket();
}
} catch(Exception e) {
listener.notifyThatDarnedExceptionHappened(...);
}
}
}
Соединение происходит из объекта в родительской нити, имеющей быть типа SomeListenerType
.
Посмотрите на следующий ответ: [Как поймать исключение из потока] [1] [1]: http://stackoverflow.com/questions/ 6546193/how-to-catch-the-exception-from-a-thread –