2014-12-01 3 views
1

Как получить анонимный runnable, чтобы заставить родительский метод выдать исключение?Как сделать исключение родительского метода throw?

public boolean drive2Exit() throws Exception { 
    while(true) { 
     handler.postDelayed(new Runnable() { 
      public void run() { 
       try { 
        ... 
       catch (Exception e) { 
        //drive2Exit should throw exception 
       } 
      } 
     }, 100); 
    } 
} 
+0

Было бы полезно отметить ваш вопрос языком, который вы используете. Некоторые люди могут это определить, но многие не могут. –

+0

@Ourous Спасибо. – mrQWERTY

+0

Что вы пытаетесь сделать? Это невозможно по нескольким причинам. Зачем вам такая функциональность? Вы понимаете ход исполнения, который здесь происходит, да? –

ответ

0

Я не думаю, что если вы можете это сделать. Когда исключение возникает в дочернем потоке, и оно не попадает, дочерний поток просто умирает, если родитель не знает об этом. Я могу думать о том, что catchException у ребенка и поместить его в общую структуру данных, например. a static переменная, разделяемая между дочерними и родительскими. Родитель периодически проводил опрос этой структуры данных, если в ее случае есть какие-то исключения. (. Изменяется т.е. общая структура данных) Или вы можете реализовать Observer шаблон проектирования уведомить main нить, когда есть новое исключение в любом из ребенка

1

Я думаю, что вы, вероятно, будет лучший сервер с использованием будущего:

https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Future.html

, используя которые вы можете в основном коде проверку результата из работоспособных, и если он выбросил исключение, вы получите исключение для обработки в проверке будущего кода. используйте это исключение, и я думаю, что встроенное исходное исключение решит, что бросить за пределы будущего.

Смежные вопросы