4.5.3.3. 국제화된 예외 만들기

JBoss Logging Tools를 사용하여 국제화된 예외를 생성하고 사용할 수 있습니다.

다음 지침에서는 Red Hat CodeReady Studio 또는 Maven을 사용하여 빌드된 기존 소프트웨어 프로젝트에 국제화된 예외를 추가하려고 한다고 가정합니다.

참고

이 섹션에서는 일부 선택적 기능이나 이러한 예외를 지역화하는 과정을 다루지는 않습니다.

  1. JBoss Logging Tools를 사용하도록 프로젝트의 pom.xml 파일을 구성합니다. 자세한 내용은 JBoss Logging Tools Maven Configuration을 참조하십시오.
  2. 예외에 대한 인터페이스를 만듭니다. JBoss Logging Tools는 인터페이스에서 국제화된 예외를 정의합니다. 정의하는 예외에 대해 각 인터페이스를 설명하여 이름을 지정합니다. 인터페이스에는 다음 요구 사항이 있습니다.

    • 공용 으로 선언해야 합니다.
    • @MessageBundle 으로 주석을 달아야 합니다.
    • 인터페이스는 인터페이스와 동일한 유형의 메시지 번들인 필드를 정의해야 합니다.

      예제: 예외Bundle 인터페이스 만들기

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

  3. 각 예외에 대해 인터페이스에 메서드 정의를 추가합니다. 각 메서드가 나타내는 예외에 대해 설명적으로 이름을 지정합니다. 각 방법에는 다음 요구 사항이 있습니다.

    • Exception 오브젝트 또는 하위 유형인 Exception 을 반환해야 합니다.
    • @org.jboss.logging.annotations.Message 주석을 사용하여 주석을 달아야 합니다.
    • @org.jboss.logging.annotations.Message 의 value 특성은 기본 예외 메시지로 설정해야 합니다. 이 메시지는 번역을 사용할 수 없는 경우 사용됩니다.
    • 반환되는 예외에 메시지 문자열 외에도 매개 변수가 필요한 생성자가 있는 경우 @Param 주석을 사용하여 메서드 정의에 해당 매개 변수를 제공해야 합니다. 매개변수는 예외 생성자에 있는 것과 동일한 유형 및 순서여야 합니다.

      @Message(value = "The config file could not be opened.")
      IOException configFileAccessError();
      
      @Message(id = 13230, value = "Date string '%s' was invalid.")
      ParseException dateWasInvalid(String dateString, @Param int errorOffset);
  4. 예외 중 하나를 가져와야 하는 코드에서 인터페이스 메서드를 호출합니다. 메서드에서 예외를 발행하지 않고 예외 오브젝트를 반환하여 트리거할 수 있습니다.

    try {
       propsInFile=new File(configname);
       props.load(new FileInputStream(propsInFile));
    }
    catch(IOException ioex) {
      //in case props file does not exist
       throw ExceptionBundle.EXCEPTIONS.configFileAccessError();
    }

이 프로젝트는 이제 지역화할 수 있는 국제화된 예외를 지원합니다.

참고

전체 작업 예는 JBoss EAP와 함께 제공되는 logging-tools 빠른 시작을 참조하십시오.