【发布时间】:2013-07-18 07:42:22
【问题描述】:
我需要创建可以检索消息数据并将其打印出来的消息类,问题是我必须在消息类中提供静态字段值,例如 (public static String exc01 ="testErr";)删除相等的"testErr";我遇到了一个错误;
Exception in thread "main" java.lang.NullPointerException
at java.util.PropertyResourceBundle.handleGetObject(Unknown Source)
at java.util.ResourceBundle.getObject(Unknown Source)
at java.util.ResourceBundle.getString(Unknown Source)
at test1.Messages.getString(Messages.java:19)
at test1.TestMessageClass.main(TestMessageClass.java:8)
1.如果消息属性文件已经包含错误值,为什么要在类消息中为静态字符串exc01提供值?
2. 是否有更好/更好的方式来处理所有消息逻辑?
为此,我创建了如下消息类
package msg;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
public class Messages {
private static final String BUNDLE_NAME = "test1.messages";
private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
public static String exc01 ="testErr";
public static String exc02;
private Messages() {
}
public static String getString(String key) {
try {
return RESOURCE_BUNDLE.getString(key);
} catch (MissingResourceException e) {
return '!' + key + '!';
}
}
}
我在名为 messages.properties 的同一包下有消息文件,并包含以下消息
exc01=Failed to create the extension for {0}
exc02=Failed to create the extension
我已经创建了简单的测试程序
public class TestMessageClass {
public static void main(String[] args) {
System.out.println(Messages.getString("exc01"));
System.out.println(Messages.getString(Messages.exc01));
}
}
打印
未能为 {0} 创建扩展 !testErr!
【问题讨论】:
-
到底是什么问题?您想知道 NullPointerException 的原因吗?
-
不,如果在消息属性文件中我已经有了消息的值,我为什么要输入相等的“testErr”...
标签: java exception error-handling