java e e_java – e.getMessage()和e.getLocalizedMessage()之间的区别

正如大家上面提到的 –

据我了解,getMessage()返回异常的名称。 getLocalizedMessage()以用户的本地语言(中文,日语等))返回异常的名称。为了使这个工作,您调用getLocalizedMessage()的类必须覆盖getLocalizedMessage()方法。如果没有,则调用其中一个超类的方法,默认情况下只返回getMessage的结果。

除此之外,我想放一些代码段来解释如何使用它。

如何使用它

Java没有什么魔法,但它确实提供了一种使我们的生活更轻松的方法。

要有效地使用getLocalizedMessage(),我们必须覆盖默认行为。

import java.util.ResourceBundle;

public class MyLocalizedThrowable extends Throwable {

ResourceBundle labels = ResourceBundle.getBundle("loc.exc.test.message");

private static final long serialVersionUID = 1L;

public MyLocalizedThrowable(String messageKey) {

super(messageKey);

}

public String getLocalizedMessage() {

return labels.getString(getMessage());

}

}

在此示例中,您必须在loc / exc / test路径中放置特定于语言的属性文件。例如:

message_fr.properties(包含一些键和值):

key1=this is key one in France

message.properties(包含一些键和值):

key1=this is key one in English

现在我们假设我们的异常生成器类是这样的

public class ExceptionGenerator {

public void generateException() throws MyLocalizedThrowable {

throw new MyLocalizedThrowable("key1");

}

}

主要课程是:

public static void main(String[] args) {

//Locale.setDefault(Locale.FRANCE);

ExceptionGenerator eg = new ExceptionGenerator();

try {

eg.generateException();

} catch (MyLocalizedThrowable e) {

System.out.println(e.getLocalizedMessage());

}

}

默认情况下,如果您在“英语”环境中执行,它将返回“英文”键值。如果将本地设置为法国,您将从message_fr文件中获取输出。

何时使用

如果您的应用程序需要支持l10n / i18n,则需要使用它。但大多数应用程序不需要,因为大多数错误消息不是最终客户,而是支持工程师/开发工程师。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值