我有一个服务器客户端应用程序,它有几个用户。我的客户端是一个很大的应用程序,里面有很多异常处理。我想收集并转移所有未处理的未捕获的异常。例如,当客户端抛出未捕获的异常(如NullPointer或ArrayIndexOutOfBounds异常)时,我想将消息传输到服务器并将其写入文件。有可能吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
如果要打印整个堆栈跟踪,请使用printStackTrace:
FileWriter fw = new FileWriter("exception.txt", true);
PrintWriter pw = new PrintWriter(fw);
e.printStackTrace (pw);
答案 2 :(得分:0)
是的,有可能但不可取。由于Swing适用于单线程模型,所有事件都由 EDT 处理,因此对于可能的解决方案,您需要在调度这些事件的位置捕获这些异常。
EventQueue是跟踪所有事件的地方,因此您可以在应用程序(不是一个好的想法)中覆盖它并捕获那里的所有异常并从那里发送到服务器单独的线程。
此外,您还需要捕获应用程序正在创建的所有线程中的异常(除了swing线程)。
更合适的解决方案是仅在客户端记录它们 稍后可以扫描这些日志文件以检查异常。
希望这有帮助。