2012-03-02 44 views
13

可能重複:
Handling exceptions from Java ExecutorService tasks凡趕上從Callable.call拋出的異常()

我用的是ExecutorService從Java協調線程。 爲了啓動線程我用

pool = new ExecutorService(2); 
callableResults = pool.invokeAll(threads); 

收集的結果,我用future.get()爲每個線程。 「線程」是從實現Callable並覆蓋call()一類對象列表。

現在Ive得到了如下的問題。方法call()的確會拋出各種特定的例外。 invokeAll()future.get()僅丟擲InterruptedException

我在哪裏能趕上我的,我在call()拋出特定的異常?或者我必須在那裏處理它們?如果拋出其中一個例外,那麼結果是InterruptedException

+1

我以前讀這一點,但我沒有看到,他使用的可贖回和()的調用呢?也許我已經監督它!?編輯:正確。我監督它。抱歉。 – nano7 2012-03-02 14:25:34

+2

在這樣的回答:http://stackoverflow.com/a/2248166/118846 – 2012-03-02 14:26:28

+1

他用了Runnable但異常捕獲是一樣的。 – Gray 2012-03-02 14:26:52

回答

23

AFAIR java.util.concurrent.Future.get()將拋出ExecutionException如果提供可調用過去拋出異常(異常存儲在Future)。

嘗試檢索由拋出異常而中止的任務的結果時引發異常。 此異常可以使用Throwable.getCause()方法進行檢查。