|
|
1
2
最简单和最直接的解决方案是使用简单的Java尝试捕获,而不是灵活的,但通常是有用的,因为错误处理策略不会经常改变。无法捕获的那些异常是在要抛出的方法上声明的,并且可以由对象B处理。 如果你想更灵活的话。为服务A创建一个接口,并声明所有可能的异常。使用逻辑实现该接口,但不进行任何错误处理。然后您可以创建实现接口的ErrorStrategy对象,并将传入调用委托给该接口的另一个实现,但这是有趣的部分,为一个或多个特定的异常附加一些错误处理策略。下面是一个让它更容易理解的例子。
如果您想更加灵活,我建议使用AOP机制,而不是简单的委托链,这样您就可以轻松地插入和交换错误处理策略。如果您使用Spring,并且您的服务A是SpringBean,那么您可以轻松地使用AOP支持中构建的Spring。在这种情况下,事后的建议就是你要找的。 在抛出通知之后:如果方法通过抛出异常而退出,则要执行的通知。
|
|
|
2
1
保持简单,使用简单的异常。 它们已经用于实现不同的错误处理策略:您可以捕获不同的异常并相应地执行操作。只要异常仍然存在,那么您就可以实现自己的错误处理方案。否则,如果它真的是控制流,那么您应该以不同的方式来考虑它。 以下是一个伪代码:
名字不太好,但它说明了这一原则。
|
|
3
0
尝试观察者模式。一般来说,您的服务应该有如下方法
或
然后,您的ServiceB应该实现ServiceListener接口,该接口可能具有如下方法
如果我们从您的问题中抽象出来,那么使用异常进行流控制是一种糟糕的实践。 |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |