在Java中使用線程時,處理InterruptedException似乎是我身邊的一個棘手問題。我很欣賞它在我的線程被終止時拋出的事實,因此爲我提供了清理的機會。我覺得奇怪的是,它不是未檢查的異常。爲什麼中斷異常檢查異常?
這就產生了以下問題: 一)如果我想在我的線程應用程序使用現有的框架,我被迫將其轉換爲框架接口接受一個例外。因此,框架通常會曲解它,而不是像它應該清理或傳播它。
b)除非堆棧中每次調用嚴格聲明InterruptedException(並且通常不是因爲a)),否則很難完全關閉。
如果InterruptedException被取消選中,它看起來會有更高的可能性被正確使用,導致線程和應用程序的整體關閉。爲什麼不是?
我想象一下,在執行多線程解決方案時,決定將此異常檢查與未檢查歸結爲可見性。 「嘿,你應該真的注意這一點,並做好準備。」事情。在編譯時強制執行此操作會迫使實施者至少考慮被中斷的問題。如果不加以控制,將會將這個問題的可見度提高到地平線以下。 – 2015-02-17 21:36:18
投票結束,因爲除了指定它的人之外,我們只能進行有根據的猜測。 – Hannes 2015-02-17 21:38:11
(а)是你的框架問題,而不是'InterruptedException'本身。 (b)'RuntimeException'表示編程錯誤; 'InterruptedException'不是編程錯誤的結果。 – dasblinkenlight 2015-02-17 21:42:31