我正在开发一个大规模的应用程序。我小心翼翼地尝试处理所有异常(并尽可能提前阻止它们)。但由于应用规模较大,有时会抛出一些异常。在我的开发环境中工作时(即从 eclipse 启动应用程序),我可以看到应用程序出现在哪里,去那里,看看我能做些什么。问题是 - 在开发过程中 - 我已经让其他人(在公司内部)使用该应用程序“进行某种测试”。他们给了我很多反馈,我很喜欢。现在,如果在他们的应用程序中抛出异常,我无法判断这个异常是在哪里创建的。
我已经看到应用程序通过对话框向用户显示未捕获的异常。虽然我当然不希望在客户版本中发生这种情况,但如果我可以在调试版本中做到这一点,可能会有很大帮助。这可能吗?
简而言之:是否可以捕获多线程 Java 应用程序的所有抛出和未捕获的异常?
编辑:有人问我,代码是如何运行的。我在 Eclipse 中创建了一个可运行的 jar,其中包含所有库和类文件。然后我使用Launch4j将这个 jar 打包到一个可执行文件中。然后使用这个可执行文件来运行应用程序(它与使用Innosetup的资源文件一起打包到 setup.exe 中,但我想这不是那么重要)。
在代码方面,我有一个 ThreadManager 可以启动所有必要的类(包括 gui),但不必保留所有这些类的句柄。