我使用ExecutorService来执行我的逻辑。如下所示,run方法应该在无限循环中执行。简而言之,run方法是消息使用者,它应该从队列中删除消息并处理消息。但是,doSomething()方法遇到异常,并且永远不会返回。经过分析,我意识到doSomething()方法中有一个NullPointer。虽然,我已经处理了这个异常,但是我如何确保循环永远不会终止,尽管有任何运行时异常。我无法承受我的Runnable任务不起作用。它会停止整个功能。
ExecutorService service = Executors.newSingleThreadExecutor()
service.submit(new Runnable(){
public void run(){
while(true){
doSomething();
}
}
})
答案 0 :(得分:2)
尝试在循环中捕获异常,如下所示:
ExecutorService service = Executors.newSingleThreadExecutor();
service.submit(new Runnable(){
public void run(){
while(true){
try {
doSomething();
} catch (Exception e) {
//log exception etc...
}
}
}
});
答案 1 :(得分:1)
使用try / catch来捕获run方法的内容,捕获每个异常。
ExecutorService service = Executors.newSingleThreadExecutor()
service.submit(new Runnable(){
public void run(){
while(true){
try {
doSomething();
} catch (Exception e) {
handleException();
}
}
}
})