有些代码只是打电话 catch(InterruptedException ex){},为什么?
答案 0 :(得分:5)
这通常表明开发人员不知道如何处理异常,因此忽略了它。
这是一种不良行为导致某些人说被检查的例外是一个失败的实验。恕我直言开发人员应该学会处理异常。
处理此异常的更好方法是
throw new AssertionError(ex)
答案 1 :(得分:0)
用于可能发生异常但对异常的响应与try块的正常继续相同的情况。一个常见的例子是调用sleep()。 (然而,这实际上往往是一个不好的例子,因为被中断经常表示应该放弃一个操作。)
答案 2 :(得分:0)
InterruptedException是所谓的已检查异常。当添加到您要调用的方法时,它表示您必须考虑到这种情况,即您需要处理调用结果的时间可能会被系统中的另一个线程抢占。
假设您在try块中有6-7个语句,并且您认为它们将以或多或少的原子方式运行。这些语句中有一个依赖于线程感知行为的语句。如果该呼叫被抢占,您的后续陈述将无法运行,您将不得不处理后果。
人们有各种各样的理由来捕捉这个例外,但不采取任何行动。除非我能清楚地表明被中断不会在我的代码中产生不良副作用,否则我无法想到这样做的很多好理由。给出显示此行为的任何示例代码,我猜不会包含任何catch逻辑,因为a)程序员没有计划处理它; b)程序员只想通过检查,以便代码编译。