![](/img/trans.png)
[英]Catching Exceptions from (ExecutorService) CachedThreadPool
[英]Recover from exceptions in ExecutorService
我使用ExecutorService來執行我的邏輯。 如下所示,run方法應該在無限循環中執行。 簡而言之,run方法是消息使用者,它應該從隊列中刪除消息並處理消息。 但是,doSomething()方法遇到異常,並且永遠不會返回。 經過分析,我意識到doSomething()方法中有一個NullPointer。 雖然,我已經處理了這個異常,但是我如何確保循環永遠不會終止,盡管有任何運行時異常。 我無法承受我的Runnable任務不起作用。 它會停止整個功能。
ExecutorService service = Executors.newSingleThreadExecutor()
service.submit(new Runnable(){
public void run(){
while(true){
doSomething();
}
}
})
嘗試在循環中捕獲異常,如下所示:
ExecutorService service = Executors.newSingleThreadExecutor();
service.submit(new Runnable(){
public void run(){
while(true){
try {
doSomething();
} catch (Exception e) {
//log exception etc...
}
}
}
});
用try / catch來包圍run方法的內容,捕獲每個異常。
ExecutorService service = Executors.newSingleThreadExecutor()
service.submit(new Runnable(){
public void run(){
while(true){
try {
doSomething();
} catch (Exception e) {
handleException();
}
}
}
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.