Java e.getMessage()和e.getLocalizedMessage()之间的差异 我使用这两种方法来获取catch抛出的消息 执行错误处理时阻塞 他们两个都从错误处理中得到了信息,但是什么呢 这两者究竟有什么不同 我在互联网上搜索了一下,从网上找到了这个答案
Java异常继承它们的getMessage和getLocalizedMessage 来自Throwable的方法(请参阅相关链接)。区别在于 子类应该重写getLocalizedMessage以提供 特定于语言环境的消息。例如,你正在适应的图像 从讲美国英语的公司/集团到 英国英语小组。您可能需要创建自定义异常类 它覆盖getLocalizedMessage以更正拼写和语法 对于将要使用您的代码的用户和开发人员来说 期待。这也可用于异常的实际翻译 信息Java e.getMessage()和e.getLocalizedMessage()之间的差异 我使用这两种方法来获取catch抛出的消息 执行错误处理时阻塞 他们两个都从错误处理中得到了信息,但是什么呢 这两者究竟有什么不同 我在互联网上搜索了一下,从网上找到了这个答案,java,android,Java,Android,Java异常继承它们的getMessage和getLocalizedMessage 来自Throwable的方法(请参阅相关链接)。区别在于 子类应该重写getLocalizedMessage以提供 特定于语言环境的消息。例如,你正在适应的图像 从讲美国英语的公司/集团到 英国英语小组。您可能需要创建自定义异常类 它覆盖getLocalizedMessage以更正拼写和语法 对于将要使用您的代码的用户和开发人员来说 期待。这也可用于异常的实际翻译 信息 问题: 这是否意味着特定于语言的实现?
问题:
- 这是否意味着
特定于语言的
实现?就像我使用
示例我的应用程序在e.getLocalizedMessage()
-如果我 在英语中
西班牙语中使用我的应用程序-然后在
西班牙语中抛出错误
- 需要一些关于何时何地可以使用这些方法的明确解释吗 对我有用
try {
somethingDangerous();
} catch (Exception e) {
log.error("got this: "+e.getMessage());
}
但是,如果您打算在屏幕上显示异常消息(例如,作为一个小对话),那么您可能希望以本地语言显示该消息:
try {
somethingDangerous();
} catch (Exception e) {
JOptionPane.showMessageDialog(frame,
e.getLocalizedMessage(),
"Error", <---- also best be taken from i18n
JOptionPane.ERROR_MESSAGE);
}
试试看{
危险的事;
}捕获(例外e){
JOptionPane.showMessageDialog(框架,
e、 getLocalizedMessage(),
“Error”,据我所知,getMessage返回异常的名称。getLocalizedMessage以用户的本地语言(中文、日语等)返回异常的名称。为了使其正常工作,您在其上调用getLocalizedMessage的类必须已重写getLocalizedMessage方法。如果未重写,则调用其超类之一的方法,默认情况下该方法仅返回getMessage的结果
因此,在大多数情况下,结果是相同的,但在某些情况下,它将以运行程序的区域的语言返回异常名称
这是否意味着特定语言的实现?比如如果我使用
e、 getLocalizedMessage()例如,我的英语应用程序-错误为
用英语抛出,如果我用西班牙语使用我的应用程序,那么错误将是
西班牙语
创建此可丢弃项的本地化描述。子类可能
重写此方法以生成特定于区域设置的消息。对于
不重写此方法(默认实现)的子类
返回与getMessage()相同的结果
在你的情况下,e只是例外的对象
getLocalizedMessage() u need to override and give your own message i.e
the meaning for localized message.
例如…如果存在空指针异常
getLocalizedMessage() u need to override and give your own message i.e
the meaning for localized message.
通过打印e,它将显示null
e.getMessage() ---> NullPointerException
e.getMessage() ---> NullPointerException
返回此可丢弃文件的详细信息字符串
public String getLocalizedMessage()
创建此可丢弃项的本地化描述。子类可能
重写此方法以生成特定于区域设置的消息。对于
不重写此方法(默认实现)的子类
返回与getMessage()
相同的结果
在你的情况下,e只是例外的对象
getLocalizedMessage() u need to override and give your own message i.e
the meaning for localized message.
getLocalizedMessage()
您需要覆盖并提供您自己的消息,即
本地化消息的含义
例如…如果存在空指针异常
getLocalizedMessage() u need to override and give your own message i.e
the meaning for localized message.
通过打印e,它将显示null
e.getMessage() ---> NullPointerException
e.getMessage() ---> NullPointerException
这真是令人惊讶——检查类的openJDK 7代码
getLocalizedMessage
的实现是-
390 public String getLocalizedMessage() {
391 return getMessage();
392 }
而getMessage
的实现是-
376 public String getMessage() {
377 return detailMessage;
378 }
及
这两种方法的实现都没有变化,只是文档有变化。据我所知,getMessage
返回异常的名称
getLocalizedMessage
以用户的本地语言(中文、日文等)返回异常的名称
为了实现这一点,您正在调用的getLocalizedMessage
类必须重写getLocalizedMessage
方法
如果没有,则调用它的一个超类的方法,该方法在默认情况下只返回getMessage
的结果,正如上面提到的那样--
据我所知,getMessage()
返回异常的名称。getLocalizedMessage()
以用户的本地语言(中文、日语等)返回异常的名称。为了实现这一点,您调用的类getLocalizedMessage()
on必须重写了getLocalizedMessage()
方法。如果没有重写,则调用它的一个超类的方法,默认情况下该方法只返回getMessage的结果
除此之外,我还想放一些代码段来解释如何使用它
如何使用它
J
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());
}
}
/**
* Returns the detail message string of this throwable.
*
* @return the detail message string of this {@code Throwable} instance
* (which may be {@code null}).
*/
public String getMessage() {
return detailMessage;
}
/**
* Creates a localized description of this throwable.
* Subclasses may override this method in order to produce a
* locale-specific message. For subclasses that do not override this
* method, the default implementation returns the same result as
* {@code getMessage()}.
*
* @return The localized description of this throwable.
* @since JDK1.1
*/
public String getLocalizedMessage() {
return getMessage();
}