모두가 위에서 언급했듯이-
내 이해에 getMessage()예외의 이름을 반환합니다. getLocalizedMessage()사용자의 현지 언어 (중국어, 일본어 등)로 예외 이름을 반환합니다. 이 작업을 수행 getLocalizedMessage()하려면 호출 중인 클래스 가 getLocalizedMessage()메서드를 재정의해야합니다 . 그렇지 않은 경우 기본적으로 getMessage의 결과 만 반환하는 수퍼 클래스 중 하나의 메서드가 호출됩니다.
그 외에도 사용 방법을 설명하는 코드 세그먼트를 추가하고 싶습니다.
이것을 어떻게 사용 하는가
자바는 마법 같은 것은 아니지만 우리의 삶을 더 쉽게 만드는 방법을 제공합니다. 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) {
ExceptionGenerator eg = new ExceptionGenerator();
try {
eg.generateException();
} catch (MyLocalizedThrowable e) {
System.out.println(e.getLocalizedMessage());
}
}
기본적으로 "영어"환경에서 실행하는 경우 "영어"키 값을 반환합니다. 로컬을 프랑스로 설정하면 message_fr 파일에서 출력을 얻습니다.
사용시기
응용 프로그램이 l10n / i18n을 지원해야하는 경우이를 사용해야합니다. 그러나 대부분의 오류 메시지는 최종 고객이 아니라 지원 엔지니어 / 개발 엔지니어를위한 것이므로 대부분의 응용 프로그램은 필요하지 않습니다.