8
例外:为什么要早丢?为什么要迟到?
关于隔离中的异常处理,有许多众所周知的最佳实践。我知道“做与不做”已经足够了,但是在大型环境中的最佳实践或模式方面,事情变得复杂了。“早点扔,迟到”-我已经听过很多次了,但仍然让我感到困惑。 如果在低层发生了空指针异常,为什么还要提早抛出并迟到?为什么要在更高层次上进行捕获?对于我来说,在较高级别(例如业务层)捕获低级异常对我来说没有任何意义。这似乎违反了每一层的关注。 想象一下以下情况: 我有一个计算数字的服务。为了计算图形,服务访问存储库以获取原始数据,并访问其他一些服务以准备计算。如果在数据检索层出现问题,为什么我应该将DataRetrievalException抛出更高级别?相反,我希望将异常包装为有意义的异常,例如CalculationServiceException。 为什么要早扔,为什么要迟到?