2016-02-29 1 views
0

В Android, но может быть в любой программе Java, я создаю дочерний поток, который выдает RunTimeException. Код выглядит так:throw runTime исключение в дочернем потоке, вызывающем основной родительский поток, почему?

new Thread(new Runnable() { 
     @Override 
     public void run() { 

      throw new RuntimeException(); 
     } 
    }).start(); 

Это полностью прекращает мое приложение с ошибкой FatalException. Я думал, что только дочерний поток закончится, но основной/родительский поток может продолжаться? это предположение неверно?

+1

В обычной java он не закончится –

ответ

0

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

+0

@ j2emanue был в вашем основном файле Java? Воссоздал вашу проблему. –

0

Довольно уверен, что вы можете создать свои собственные исключения и сделать stopSelf() на дочернем потоке. Не уверен, что именно вы пытаетесь сделать, или я приведу пример.

Runnable r = new Runnable() 
{ 
    public void run() { 
    while (/*whatever you want to determine end of thread*/) 
    { 
     try { // this stuff 
     } catch (Exception e) { // exception handling 
     } 
    } 
    stopSelf(); 
    } 
}; 

//Thread start code 

это должно работать, и не врезаться приложением ...

+0

Фактически я просто спрашиваю о фундаментальном поведении. Должно ли исключение времени выполнения, которое также было брошено на конец дочернего потока, родительский поток? в моем тесте на андроиде это делало это, но кто-то упоминал о java, это не так, я не знаю, каково ожидаемое поведение. Какое правило? – j2emanue

+0

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

+0

Я вижу, вы можете сделать это официальным ответом для рассмотрения. – j2emanue

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