在客户端 - 服务器关系中,服务器是否应始终将异常重新抛出到客户端?

时间:2010-06-01 22:01:37

标签: exception exception-handling

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

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

由于

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

有多种错误。

  • 对于客户可以更正并重试的错误,请向他们说明要更正的内容。
  • 对于其他错误,如果重试不会产生任何影响,例如未经授权的操作,请让用户知道他们无法执行操作的原因,以及他们是否可以采取任何措施来改变此事。
  • 正如您所建议的,如果客户端发出更新记录的请求,并且服务器上的某些内容发生在客户端的控制之外,但服务器可以恢复,则不会通知客户端。如果您需要知道,请让服务器通知您。
  • 如果服务器上发生错误,但服务器无法恢复,您肯定需要通知客户端失败并通知您,或稍后再试。同样,系统应通知您。