我已经学习 Java 大约一个月了,对这样的客户端/服务器情况还不是很熟悉。
基本上我遇到了这样一种情况,我们的客户端 Java 软件 (GUI) 显示了一个 nullpointerexception 弹出窗口,但在客户端没有堆栈跟踪。有人不得不去检查服务器端的堆栈跟踪。
我的问题是,客户端不应该也收到这些宝贵的信息吗?这样的情况可以吗,理由是只需要一份堆栈跟踪副本吗?
我已经学习 Java 大约一个月了,对这样的客户端/服务器情况还不是很熟悉。
基本上我遇到了这样一种情况,我们的客户端 Java 软件 (GUI) 显示了一个 nullpointerexception 弹出窗口,但在客户端没有堆栈跟踪。有人不得不去检查服务器端的堆栈跟踪。
我的问题是,客户端不应该也收到这些宝贵的信息吗?这样的情况可以吗,理由是只需要一份堆栈跟踪副本吗?
并不真地。不建议向客户端展示您的应用程序的工作方式。主要是出于安全原因。您的堆栈跟踪显示所有被调用的对象、方法以及是否使用调试信息编译,甚至是行。这对客户端来说信息太多了,放在服务器上就可以了。
这在 SQL 注入、跨端脚本和其他我不记得的情况中,不正确的异常处理是一个安全漏洞。
编辑:这里有其他漏洞(虽然我没有看到这个:()
客户只需要知道它需要知道的帽子。在很多情况下,在您的客户端上不显示任何堆栈跟踪是完全可以的。您的用户应该得到明确的错误消息,但不关心堆栈跟踪。
出于调试目的,堆栈跟踪通常会丢失,应用程序给出错误,用户重新启动它并消失是任何异常,因此如果您需要知道错误,请使用日志框架。