4.5.6. 自定义国际化例外

4.5.6.1. 添加消息 ID 和项目代码到例外消息

消息 ID 和项目代码是国际化异常所显示的每条消息的前面的唯一标识符。通过这些识别代码,可以创建对应用中所有异常消息的引用。这允许用户查找以自己不理解的语言编写的异常消息的含义。

以下步骤演示了如何将消息 ID 和项目代码添加到使用 JBoss Logging Tools 创建的国际化异常消息中。

先决条件

  1. 您必须已有具有国际化例外的项目。详情请查看 创建国际化例外。
  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 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)