4.5.6. 국제화된 예외 사용자 정의

4.5.6.1. 예외 메시지에 메시지 ID 및 프로젝트 코드 추가

메시지 ID와 프로젝트 코드는 국제화된 예외에 의해 표시되는 각 메시지 앞에 오는 고유한 식별자입니다. 이러한 식별 코드를 통해 애플리케이션의 모든 예외 메시지에 대한 참조를 생성할 수 있습니다. 이를 통해 사람이 이해할 수 없는 언어로 작성된 예외 메시지의 의미를 조회할 수 있습니다.

다음 절차에서는 JBoss Logging Tools를 사용하여 생성된 국제화된 예외 메시지에 메시지 ID 및 프로젝트 코드를 추가하는 방법을 설명합니다.

사전 요구 사항

  1. 국제화된 예외가 있는 프로젝트가 이미 있어야 합니다. 자세한 내용은 Create Internationalized Exceptions를 참조하십시오.
  2. 사용할 프로젝트 코드를 알아야 합니다. 단일 프로젝트 코드를 사용하거나 각 인터페이스에 대해 다른 코드를 정의할 수 있습니다.

예외 메시지에 메시지 ID 및 프로젝트 코드 추가

  1. 예외 번들 인터페이스에 연결된 @MessageBundle 주석의 projectCode 특성을 사용하여 프로젝트 코드를 지정합니다. 인터페이스에서 정의된 모든 메시지는 해당 프로젝트 코드를 사용합니다.

    @MessageBundle(projectCode="ACCTS")
    interface ExceptionBundle
    {
       ExceptionBundle EXCEPTIONS = Messages.getBundle(ExceptionBundle.class);
    }
  2. 예외를 정의하는 메서드에 연결된 @Message 주석의 id 특성을 사용하여 각 예외에 대해 메시지 ID를 지정합니다.

    @Message(id=143, value = "The config file could not be opened.")
    IOException configFileAccessError();
중요

프로젝트 코드와 메시지 ID가 모두 있는 메시지는 메시지 앞에 표시됩니다. 메시지에 프로젝트 코드와 메시지 ID가 모두 없는 경우 둘 다 표시됩니다.

예제: 국제화 예외

이 예외 번들 인터페이스 예제에서는 "ACCTS"의 프로젝트 코드를 사용합니다. ID가 "143"인 단일 예외 메서드가 포함됩니다.

@MessageBundle(projectCode="ACCTS")
interface ExceptionBundle
{
    ExceptionBundle EXCEPTIONS = Messages.getBundle(ExceptionBundle.class);

    @Message(id=143, value = "The config file could not be opened.")
    IOException configFileAccessError();
}

다음 코드를 사용하여 예외 오브젝트를 가져오고 throw할 수 있습니다.

throw ExceptionBundle.EXCEPTIONS.configFileAccessError();

다음과 같은 예외 메시지가 표시됩니다.

Exception in thread "main" java.io.IOException: ACCTS000143: The config file could not be opened.
at com.company.accounts.Main.openCustomProperties(Main.java:78)
at com.company.accounts.Main.go(Main.java:53)
at com.company.accounts.Main.main(Main.java:43)