我有一个 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/