1
4
不要依赖跨服务边界自动生成的异常!请使用您正在考虑的@webfault注释。如果客户需要处理它,没有什么例外。将其作为数据合同(故障合同)的一部分。谷歌的“soap fault element”有教程和其他文章解释了如何以及为什么。 这个 正常控制 服务流程应该处理故障情况…错误不一定是例外。 当涉及到抛出异常时,这里有一些 great "almost" rules for exceptions (当然,这些规则有例外情况):
当您将这些应用于服务请求/交换时,您会发现,就返回给调用者的异常情况进行思考是没有意义的。如果有人要告诉调用者一个问题,那么在这一点上没有真正异常的问题,应该由服务合同来处理。 即使您只有一个错误合同,上面写着“请求由于未知原因失败”,客户也可以预料到这一点,并且它成为合同的一部分。如果您希望根据需要获得更详细的信息,这可能会有所帮助,具体取决于您的需求。 想想REST服务架构。HTTP返回一些预定义的错误代码。有足够多不同的错误类别,客户机可以为每个错误类别采取适当的操作…放弃是因为资源(页面)永久消失,重定向是因为页面已移动,重试是因为存在内部服务器错误,处理用户所需权限等。作为一个通用的HTTP客户端,您不会期望看到内部语言异常回来,对您来说意味着什么。现有的HTTP服务实现中有几十种语言和数千种潜在的异常。这就是为什么他们不是合同的一部分。 希望这有助于解释为什么您的错误不例外,以及为什么应该是合同的明确部分。 祝好运 |