使用异常或自定义类在Java中的两层之间进行通信的最佳方法

问题描述 投票:1回答:1

我正在编写一个应用程序,在其中我困惑如何在业务层和服务层之间进行通信。 让我通过举例说明我的观点:

createStusdentRecord是服务层中的方法,我从业务层调用此方法。 现在的方法1:创建不同的自定义异常,并在缺少某些数据等情况下抛出异常,并在成功返回Studentid时,让业务层处理这些异常。

方法2:创建一个类SMD(状态消息和数据)并处理服务层中的所有异常。 将此SMD返回业务层,业务层中无异常处理。

哪种方法更好,为什么?

当我们公开Web服务时应该采用什么方法?

java design-patterns exception-handling
1个回答
2
投票

我将采用方法1。假设呼叫者可以处理这些真正特殊的条件。

我喜欢例外,因为这样可以找到导致失败的原因。 隐藏所有错误或仅返回布尔值以表示成功/失败是一种不好的做法。

关键是要尝试隐藏尽可能多的内部内容,以隐藏实现细节以及其他层不知道(或想知道)的内容,但在出现问题时要与足够的信息相平衡。

Student s = dao.createStudent(...)

如果给定的参数无效,则抛出异常吗? 也许取决于为什么它们无效。 对诸如“已经存在具有这些参数的学生”之类的概念进行自定义例外可能是个好主意。 但是,使用“ IllegalArgumentException”之类的内置JDK之一可能是更好的选择,例如“参数无效”。

此外,我会将所有自定义的Exceptions子类都设为父“ DaoException”,这样只关心成功/失败捕获的客户端代码就可以捕获父类,但是需要更细粒度控制的对象始终可以捕获子类。

© www.soinside.com 2019 - 2024. All rights reserved.