代码之家  ›  专栏  ›  技术社区  ›  GurdeepS

在客户机-服务器关系中,服务器是否应始终将异常重新发送给客户机?

  •  1
  • GurdeepS  · 技术社区  · 14 年前

    我有一组Web服务(服务器)和一个使用此服务的应用程序(客户端)。在这种关系中,服务器应该总是抛出异常(即在抛出块中,重新引发捕获的异常),而客户机应该捕获到这种异常。服务器可以处理的异常,它将处理,而不是重新发送,但是其他的一切都将被抛出到调用层以进行进一步的操作(消费应用程序可以引发一个消息框或其他)。

    这是可以处理的异常的一个很好的例子吗:由于目录需要特殊的特权,所以无法写入文件,因此如果这引发了异常,文件将写入不需要管理员权限的地方。

    谢谢

    2 回复  |  直到 14 年前
        1
  •  0
  •   Marcus Adams    14 年前

    存在多种类型的错误。

    • 对于客户机可以更正并重试的错误,请向他们提供有关更正内容的说明。
    • 对于其他错误,重试不会有任何影响,例如未经授权的操作,请让用户知道他们为什么不能执行该操作,以及他们是否可以采取任何措施来更改问题。
    • 正如您所建议的,如果客户机发出更新记录的请求,并且服务器上发生了客户机无法控制的事情,但是服务器可以恢复,那么不要通知客户机。如果您需要知道,那么让服务器通知您。
    • 如果错误发生在服务器上,但服务器无法恢复,您肯定需要通知客户端失败,并通知您,或者稍后再试。同样,系统应该通知您。
        2
  •  0
  •   Flavius Stef    14 年前

    这个特定的错误听起来像是服务器上的一个配置问题,因此客户机没有任何操作方法,因此不应该向客户机提供这些信息。

    我通常在一般错误消息(“系统错误,请联系您的系统管理员”)下涵盖此类错误,并将错误记录在服务器上(供以后检查)。