4.5.3.3. 创建国际化例外


您可以使用 JBoss Logging Tools 创建和使用国际化的异常。

以下说明假定您要为使用 Red Hat CodeReady Studio 或 Maven 构建的现有软件项目添加国际化的异常。

注意

本节不涵盖这些例外的所有可选功能或本地化过程。

  1. 配置项目的 pom.xml 文件,以使用 JBoss Logging 工具。详情请查看 JBoss Logging Tools Maven 配置
  2. 为异常创建一个接口。JBoss 日志工具在接口中定义了国际化的异常。为每个接口命名其定义的异常的描述性。接口有以下要求:

    • 必须将其声明为 公开
    • 它必须标有 @MessageBundle
    • 接口必须定义与接口相同的消息捆绑包的字段。

      示例:创建一个 例外捆绑包 接口

      @MessageBundle(projectCode="")
      public interface ExceptionBundle {
         ExceptionBundle EXCEPTIONS = Messages.getBundle(ExceptionBundle.class);
      }
      Copy to Clipboard Toggle word wrap

  3. 为每个例外向接口添加一个方法定义。以描述性方式命名每个方法表示的异常。每个方法都有以下要求:

    • 它必须返回 例外 对象或子类型 例外
    • 它必须标有 @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);
      Copy to Clipboard Toggle word wrap
  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();
    }
    Copy to Clipboard Toggle word wrap

该项目现在支持国际化的异常,可以本地化。

注意

请参阅 JBoss EAP 附带的 logging-tools quickstart,以获取完整的工作示例。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat