java - 静态初始化程序中的异常导致程序挂起

标签 java

我有一个 GUI 应用程序。在我的主类中,我有一个方法(称为 createAndShow())来初始化我所有的 GUI 类。在每个 GUI 类中,我都有 static initializer 来读取属性文件(资源包或配置文件)。如果文件或条目丢失或值错误,我会捕获异常,然后故意向上层抛出 MissingResourceException。在主类的 createAndShow() 方法中,我放置了一个 try-catch 来捕获 Exception。但不知何故,JVM 拒绝到达那里。每当文件丢失时,就会抛出 MissingResourceException,然后应用程序就会挂起。我预计 createAndShow() 方法会捕获该异常并正常退出。静态初始化程序抛出的异常有什么特别之处吗?

我使用的是 XP 和 java 1.6。

最佳答案

静态初始化器由类加载器调用,而不是由任何用户代码调用。

您将无法捕获这些异常,并且由于无法加载您需要的类,您的应用程序将会崩溃。

我的建议是做一个配置单例类,你可以使用 What is an efficient way to implement a singleton pattern in Java? .在该类中创建一个 init()load() 方法,该方法将能够抛出可以在您的 createAndShow() 中捕获的异常> 方法。

关于java - 静态初始化程序中的异常导致程序挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7080715/

相关文章:

java - 如何在java中设置线程的时间?

java - 将 Moxy 设置为默认 jaxb 实现提供者

java - 相邻打印 2 个 HashMap

java - 用于打印 key 的 getGenerateKeys() 不起作用。为什么?

java - Spring @Transactional 注解中 readOnly 属性的正确位置

java - 在 PageViewer 中动态更新图像

java - 在字符串方法参数上同步 java 中的 io 操作?

java - Map.containsKey() 有用吗?

java - 来自 Java 的 clang 的 `pkg-config` 参数

java - 使 HttpSession 变量静态?