2012-12-10 94 views
0

我想從運行線程捕獲異常並在調用線程中處理它。我將如何以最好的方式?從運行線程捕獲異常

try { 
    Runnable connect = new Runnable() { 
    public synchronized void run() { 
     try { 
     ... some code requiring long time 
     } catch(Exception e) { 
     ..I want to catch here and send to calling thread 
     } 
    } 
    } 

    synchronized(connect) { 
    new Thread(connect).start(); 
    connect.wait(); 
    ...if exception then handle it 
    ...keep on with code if no exception occurred 
    } 

} catch(Exception e) { 
} 
+0

我想你需要使用併發相關的類和Future.http://www.vogella.com/articles/JavaConcurrency/article.html#futures – kosa

回答

1

最好的是不直接使用線程,而是使用Future。如果您願意,您可以通過線程運行FutureTask,或者通過向執行程序提交Callable(首選方法)來獲得Future。 「未來」爲您提供了一種等待完成任務並處理結果(常規或異常)的便捷方式。