Как получить анонимный runnable
чтобы заставить родительский метод runnable
исключение?
public boolean drive2Exit() throws Exception {
while(true) {
handler.postDelayed(new Runnable() {
public void run() {
try {
...
catch (Exception e) {
//drive2Exit should throw exception
}
}
}, 100);
}
}
Я думаю, что вы, вероятно, лучший сервер с использованием Future:
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Future.html
используя то, что вы можете в своем главном коде проверить результат runnable, и если он бросил исключение, вы получите исключение для обработки кода, проверяющего будущее. используйте это исключение, и я думаю, что встроенное исходное исключение решит, что бросить за пределы будущего.
Я не думаю, что если вы это сделаете. Когда исключение возникает в дочернем потоке и оно не попадает, дочерний поток просто умирает, если родитель не знает об этом. Я могу подумать о том, что catch
Exception
в дочернем элементе и поместить его в общую структуру данных, например static
переменную, разделяемую между дочерними и родительскими. Родитель периодически будет опробовать эту структуру данных, если в ней есть какое-то исключение. Или вы можете реализовать шаблон проектирования Observer
для уведомления main
потока, если в любом из дочерних элементов есть новое исключение (т.е. Структура разделяемых данных изменяется).