2016-02-29 60 views
0

在Android中,但可以在任何Java程序中,我产生了一个引发RunTimeException的子线程。代码如下所示:在导致主父线程结束的子线程上抛出runTime异常,为什么?

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

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

这完全终止我的应用程序与FatalException错误。我认为只有子线程会结束,但主/父线程可以继续?这个假设不正确吗?

+1

在正常的java它不会终止 –

回答

0

的RuntimeException通常只会杀死线程,但可以杀死程序。其他因素通常是决定因素。需要查看更多代码,但这可能是线程中的android异常处理问题。

+0

@ j2emanue它在你的主要Java文件中吗?重新创建你的问题。 –

0

只有主(单个)线程的Android。

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

其实我只是问基本的行为。应该抛出一个子线程的运行时异常结束父线程吗?在我的测试在Android上它这样做,但有人在Java上提到它不是所以我不知道什么是预期的行为。什么是规则? – j2emanue

+0

RuntimeException通常只会杀死线程,但即使在java中也可能会终止程序。其他因素通常是决定因素。需要查看更多代码,但这可能是线程中android异常处理的一个问题。 –

+0

我明白了,您可以将此作为考虑的正式答案。 – j2emanue

相关问题