簡體   English   中英

從ExecutorService中的異常中恢復

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM