首页 > 解决方案 > 多捕获或异常层次结构

问题描述

与 Clean Code 更一致的是什么。使用 Multicatch 或创建超类 Exception 并捕获它。

try {
      //some action     
} catch (Exception1 | Exception2 e) {
      //some action after exception    
}

或者

Exception1 extends SuperClassException  
Exception2 extends SuperClassException

try {
       //some action     
} catch (SuperClassException e) {
      //some action after exception    
}

标签: javaexceptiontry-catch

解决方案


与 Clean Code 更一致的是什么。使用 Multicatch 或创建超类 Exception 并捕获它。

干净的代码在这里并没有真正的帮助。因为我想不出任何指向这两个选项之一的明显规则。因此,我认为这归结为(个人/团队)风格。

最后,这两种方法各有利弊:

第一个更详细,因为它准确地告诉您捕获哪些异常。你看看它,你就知道了。

第二个隐藏了这一事实,因为您真的看不到“有多少”异常可能属于该类别。但是,当然,在一定程度上,multi catch 也存在同样的问题,因为您也可以用它来捕获一个或多个基本异常类型。

从这个角度来看,我的建议是:

  • 当您几乎没有明显的异常时,只需列出它们(尤其是当当前没有可以使用的明显超类时)
  • 当不需要特定的类型信息时,当然,只捕获一个超类型的东西

推荐阅读