gpt4 book ai didi

java - 处理 Web 服务错误代码(除了一般的 soapfaultexceptions)

转载 作者:行者123 更新时间:2023-11-30 11:54:24 26 4
gpt4 key购买 nike

我目前正在向 JSF/Richfaces 应用程序添加功能,我们现在正在与外部网络服务集成。

使用服务完成的操作包括:获取用户、获取帐户、更新用户、更新帐户、创建用户、创建帐户。

这些服务以及意外的 soapfaultexception 可以在其响应类型中返回错误代码。主要针对以下几行失败:登录名已存在,密码不符合条件,帐号已存在,未找到用户。

调用如下:BackingBean > Manager Level Class(主要是传递)> Web Service Client(进行实际的 WS 调用)。对于 GET 操作,ID(用户名或帐号)向下传递,帐户或用户对象向上传递。更新传递用户/帐户对象,与创建相同。

将这些错误返回到 backingbean 以便我可以通过 UI 处理它们的最佳方法是什么?

  1. 当然,我可以检查响应中的错误代码、抛出异常并将其继续抛出到我将在那里处理的支持 bean。
  2. 我可以实现一个结果类型,它包含一个错误类型和我从服务中填充的 POJO/DTO。
  3. 我的一位同事建议我使用装饰器来装饰我的 USER 或 ACCOUNT 对象以及我也需要创建的 validator 。基本上我想我的装饰器只会保存自定义错误类型,而 Validate() 只会检查是否 (List!= null && !(Size>0))。正确吗?

您对提议的方法有何看法? #1 是最简单的,#2 似乎更优雅且仍然简单,#3 对我来说是“最难”的,因为我从未使用过装饰器模式。然而,#3 似乎是最优雅的,同时也是最耗时的实现。

如果您需要更多说明,请告诉我。

谢谢,太好了!

最佳答案

最好始终使用异常(When to throw an exception)以编程方式进行限制。

首先问问自己这是不是一个异常(exception)情况?在您的情况下,这不仅仅是一个验证错误。异常是有代价的,并且不能保证您能够在链的更下游捕获异常。

两个 2/3 都是类似的解决方案,因为您只是试图将附加信息返回给 Controller 。

选项 3 可以被认为更简洁,但如果您有权访问用户/帐户类,则始终可以向可能包含验证错误的类添加一个额外的属性。

这种模式的一个很好的例子是 ActiveRecord在 ruby​​ 中,相同类型的模型。您在模型对象上调用保存,如果发生错误,它会填充一个错误属性。

关于java - 处理 Web 服务错误代码(除了一般的 soapfaultexceptions),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5746604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com