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