実行可能なタスクは、着信 xml ファイルを解析し、別のクラスから呼び出されます。場合によっては、解析が失敗して例外がスローされることがあります。例外が発生した場合でも、タスクは実行されている必要があります。Uncaught 例外ハンドラを使用して、新しいスレッドで同じタスクを再開しようとしました。しかし、それについてもっとアイデアが欲しかった。
Class invoking thread : (スレッドを呼び出す)
新しいスレッドで同じタスクを再起動することは問題なく機能しますが、おそらくスレッドの終了に至らずに例外を処理する方法が必要です
Thread fileProcessThread = new Thread(FileProcessor);
fileProcessorThread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler()
{
@Override
public void uncaughtException (Thread arg0, Throwable arg1)
{
FileProcessor newObject = new FileProcessorTask();
Thread t = new Thread(newObject);
t.start();
}
});
fileProcessor.start();
タスク クラス:
public void run() {
try {
xmlparser.parse(incomingXmlFile);
}
catch (Exception e) {
Thread.currentThread.getUncaughtExceptionalHandler().uncaughtException(Thread.currentThread(), e);
// this invokes uncaughtException to restart thread ?
}
}
監視サービス (ファイル ディレクトリ スキャン) を実行しているので、スレッドが終了しても常にタスクが必要です。