【发布时间】:2010-03-22 23:19:32
【问题描述】:
在我的公司中,系统设计为具有 3 层。 Layer1 负责业务逻辑处理。 Layer3 调用后端系统。 Layer2 位于两层之间,因此 layer1 不需要了解后端系统。为了从 layer3 传递信息,layer2 需要定义到 layer1 的接口。
例如,layer1 想要检查来自用户的 PIN 是否正确。它调用 layer2 checkPin() 方法,然后 layer2 调用相关的后端系统。 checkPin() 结果可能是:correctPin、inCorrectPin 和 internalError。目前,我们定义了返回类型“int”。所以如果layer2返回0,则表示正确的Pin;如果返回 1,则表示 inCorrectPin;如果返回 9,则表示内部错误。
它有效。但是,我对这种方法感到有些不安。有更好的方法吗?例如定义一个枚举 CheckPinResult{CORRECT_PIN,INCORRECT_PIN,INTERNAL_ERROR},并返回 CheckPinResult 类型?
谢谢, 莎拉
【问题讨论】:
-
在每一层上使用例外。如果某个层失败,您将捕获该异常。这样,您就知道哪一层失败了。这是一个建议,因此我没有将其发布为答案。
-
是的,我明白你的意思。我们目前正在做的是在内部错误时记录错误。如果有异常,我们会捕获它并将其记录在 layer1 中。 Layer2 和 Layer3 将其升级到更高层。
-
我认为Elite所说的是从每一层创建一个自定义异常。这些是业务例外,这就是我们所做的。当您将层用作 API 时,它也有帮助,外部开发人员将能够处理错误。