在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