有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

生产中的Java web应用程序应该如何处理AJAX请求期间意外的浏览器终止?

我有一个非常标准的web应用程序,可以处理来自浏览器中运行的标准Javascript客户端的AJAX请求

不奇怪,当浏览器关闭时,服务器正处于读取数据的中间,抛出异常。在生产中,这种情况并不少见

关于防止用户在等待回复时关闭浏览器,这里有一些很好的建议,但我的问题是不可避免的连接丢失。例如,用户的电脑断电、网络电缆被拔出等

Java web应用的行业最佳实践会抑制这种例外吗?还是应该记录下来?我的系统中的堆栈跟踪完全在第三方库中(库开始读取,但在将此数据传递给代码之前抛出异常),如果我想抑制它,对我来说是否可行?我觉得在生产中有这些不可避免的例外是不合适的


共 (1) 个答案

  1. # 1 楼答案

    我将从问题中删除“AJAX”,这不是AJAX特有的

    此外,“在生产中出现这些异常是不合适的”这句话也应该改变,没有办法不出现这些异常,你可能是指“记录这些异常”

    我会小心地抑制响应处理中出现的任何异常。我至少会记录异常消息。如果正在抑制,则需要100%确保所抑制的异常是由请求端的故障引起的。在Java中,确定异常的来源是不可行的,而且我所知道的任何web框架都不会抛出异常的特殊子类,表明异常是特定于该故障的。抑制异常的一个明显问题是抑制重要的异常,并在评估其他问题的根本原因时遇到不必要的问题

    您可能应该发布另一个关于您正在使用的特定库/框架的问题,询问对于该框架,忽略超过特定点的异常是否安全

    请注意,一些web框架在读取数据处理数据写入数据之间会有很难的分离。对于那些,通常情况下,写入数据的阶段可以被放弃以进行异常检查,但我见过一些情况,其中会抛出异常,甚至IO异常,并且与请求的另一方无关

    还有其他遵循流式或异步模型的web框架,在这些框架中,很难知道是哪个部分导致了异常