栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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());    }}

java.util.ResourceBundle

用于进行本地化。

在此示例中,您必须在

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,则需要使用它。但是大多数应用程序并不需要,因为大多数错误消息不是针对最终客户的,而是针对支持工程师/开发工程师的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/393557.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号