Java 在大型应用程序中收集所有未捕获的异常

Java 在大型应用程序中收集所有未捕获的异常,java,swing,Java,Swing,我有一个服务器客户端应用程序,它有几个用户。我的客户是一个大的应用程序,里面有很多异常处理。我想收集并传输所有未处理的异常。例如,当客户端抛出一个未捕获的异常(如NullPointer或ArrayIndexOutOfBounds异常)时,我希望将消息传输到服务器并将其写入文件。是否可能?如果要打印整个堆栈跟踪,请使用printStackTrace: FileWriter fw = new FileWriter("exception.txt", true); PrintWriter pw = ne

我有一个服务器客户端应用程序,它有几个用户。我的客户是一个大的应用程序,里面有很多异常处理。我想收集并传输所有未处理的异常。例如,当客户端抛出一个未捕获的异常(如NullPointer或ArrayIndexOutOfBounds异常)时,我希望将消息传输到服务器并将其写入文件。是否可能?

如果要打印整个堆栈跟踪,请使用printStackTrace:

FileWriter fw = new FileWriter("exception.txt", true);
PrintWriter pw = new PrintWriter(fw);
e.printStackTrace (pw);

是的,这是可能的,但不可取。由于Swing在单线程模型上工作,所有事件都由EDT处理,因此对于可能的解决方案,您需要在调度这些事件的位置捕获这些异常

EventQueue是跟踪所有事件的地方,因此您可以在应用程序中覆盖它(这不是一个好主意),并在那里捕获所有异常,然后在单独的线程中从那里发送到服务器

此外,还需要捕获应用程序正在创建的所有线程中的异常(swing线程除外)

更合适的解决方案是只在客户端记录它们,并且 稍后可以扫描这些日志文件以检查异常

希望这有帮助

对日志记录有什么建议吗


如图和所示,您可以添加默认的未捕获异常处理程序。如图所示,您可以在对话框中显示堆栈跟踪。

考虑一下如果联系服务器时抛出exceptioncatch(IOException e){write.somewhere(e);}我认为您真正想要的是在应用程序中添加一些适当的日志记录,并配置日志记录框架,以便将所有错误和堆栈跟踪写入某个文件?@Philipp Sander Client是一个swing应用程序,我想知道有关UI的错误。如果有一个连接错误,我知道我会怎么做,但如果有一个用户界面错误的情况不清楚,这对我来说很难。我对用户说“不要关闭控制台并向我发送错误”,但他们总是忘记它。和的可能重复。