一般的な例外の知恵、特にJavaでのチェックされた例外とチェックされていない例外の使用について多くのことが書かれていますが、アプリケーションの終了ではなく、スレッドの終了をデフォルトのポリシーにするという決定の防御に興味があります。 C++での方法。この選択は私には非常に危険なようです。プログラマーがランダムに計画しなかった条件により、スタックトレースをログに記録した後、プログラムの一部が停止しますが、残りのプログラム兵士は断固としてオンになります。何がうまくいかない可能性がありますか?私の直感と経験によると、ここでは多くのことがうまくいかない可能性があり、デフォルトのポリシーは、それを選択する特定の理由がある人だけが特別に選択する必要がある種類のものです。このような一見大きな欠点があるこの戦略の利点は何ですか?私はリスクを過大評価していますか?
編集:これまでの回答に基づいて、私は自分が認識している危険性の説明にもっと集中する必要があると感じています。共有状態を更新するために、複数のスレッド(スレッドプールなど)を使用するアプリケーションの場合について話しています。このポリシーはシングルスレッドアプリケーションでは問題にならないことを認識しています。
EDIT2:Thread.stop()メソッドが非推奨になった理由の説明から、言語メンテナの間でこれらのリスクが認識されていることがわかります(ここにあります:http://docs.oracle.com/javase/7/docs /technotes/guides/concurrency/threadPrimitiveDeprecation.html)。キャッチされない例外が原因でスレッドが予期せず停止した場合も、まったく同じ問題が当てはまります。彼らは、スレッドが停止したときにすべてのモニターが自動的にロック解除されるようにJVMを設計している必要があります。これは、実装の選択としては不適切なようです。モニターがロックされているときにスレッドが停止するということは、プログラム全体が停止する必要があることを示しているはずです。これは、一部の共有状態では、代替手段が内部の不整合であることがほぼ確実だからです。