如果方法抛出的异常与它所执行的任务没有明显的联系,这种情况将使人不知所措。当方法传递由低层抽象抛出异常时,往往会发生这种情况。除了使人感到困惑之外,这也“污染”了具有实现细节的更高层的API。如果高层的实现在后续的发行版本中发生了变化,它所抛出的异常也可能跟着发生变化,从而潜在地破坏现有的客户端程序。
为了避免这个问题,更高层的实现应该捕获低层的异常,同时抛出可以按照高层抽象进行解释的异常。这种做法称为异常转译(exception translation),如下代码所示:
// Exception Translation
try {
... // Use lower-level abstraction to do our bidding
} catch (LowerLevelException e) {
throw new HigherLevelException(...);
}

本文探讨了在软件开发中,如何通过异常转译避免高层API被底层实现细节污染的问题。异常转译是指在高层实现中捕获低层异常,并抛出符合高层抽象的异常,以增强代码的可读性和稳定性。
371

被折叠的 条评论
为什么被折叠?



