4

重複の可能性:
Eclipse デバッガーは、明確な例外なしに ThreadPoolExecutor で常にブロックします。なぜですか?

Eclipse は、finally ブロック内の行の下にある run() メソッド内で実行を継続的に中断します。

ここではブレークポイントを設定していませんが、アプリは期待どおりに動作しているようです。

なぜこれが起こっているのかについての指針はありますか?

   java.util.concurrent.ThreadPoolExecutor

   public void run() {
        try {
            Runnable task = firstTask;
            firstTask = null;
            while (task != null || (task = getTask()) != null) {
                runTask(task);
                task = null;
            }
        } finally {
            workerDone(this);
        }
    }
}
4

1 に答える 1

3

おそらく、メソッドworkerDoneの呼び出しによって例外がスローされますが、これは処理されず、メソッドの外でバブルアップしrunます。したがって、スレッドは突然終了しますが、Eclipse では、例外がメソッドをエスケープする直前にその状況を調べることができます。それが自動の「例外ブレークポイント」です。

于 2012-08-01T16:31:42.260 に答える