所有问题都通过异常对象进行报告,该对象是由 WVCM 定义的异常对象的子类。客户机可从该异常中获取以下信息:
- 原因码(WVCM 枚举的扩展),它对正在报告的事件类型进行分类(例如 WvcmException.ReasonCode.READ_FAILED)。
- 下级原因码,它在原因码分类中提供了更细化的事件分类(例如 StpException.StpReasonCode.CONFLICT)。
- 特定于正在报告事件的独立于语言环境的消息标识(目录索引)和参数值。该信息适用于记录用途还可用于生成本地化消息。
- 嵌套异常的列表,每个嵌套异常均描述了提供给由异常报告的事件的下级事件。
- 事件中涉及的关于资源访问问题的主资源,该资源通常是失败操作的目标资源。
- 事件中涉及的关于属性访问问题的主资源属性。
- 操作成功的资源列表(对于对多个资源寻址的操作)。
- 特定于正在报告的事件的其他信息(对于选定事件)。
每个操作定义了一组操作成功需要必须满足的前置条件。例如,将要读取其属性的资源必须存在,与将要创建的资源同名的资源不能存在,将要检出的资源必须受版本控制且已检入。违反这些前置条件会导致操作抛出异常。
操作通常可应用于资源的集合。如果操作的任一前置条件不正确,将抛出异常(并附带异常对象中报告的成功记录)。
服务器在读或写资源的属性或元属性时遇到的问题不会导致 Rational® CM API 操作抛出异常。在这种情况下,异常与返回的代理中的属性相关联。仅当客户机尝试从代理中抽取该属性值时,才会抛出异常。客户机还可能在抽取属性值之前查询代理以确定是否出现了问题,并获取异常但不抛出异常。请参阅关于属性的更多信息。
Rational CM
API 包括以下主要异常类型:
- StpException(扩展 WvcmException)
- StpPropertyException(扩展 StpException)
- StpPartialResultsException(扩展 PropertyException)
StpException
StpException 是
WvcmException 的扩展,并且是 RationalCM API 抛出的所有已校验异常的基类。WVCM 定义方法的所有实现都会抛出 WvcmException。作为 WVCM 扩展的 Rational CM
API 的所有公共方法也会抛出 WvcmException。但是,所有这些方法的实现通常仅抛出 StpException 而非 WvcmException。这些约定适用于以下情况:
- 抛出 StpException 在任何方法声明(公共或其他)中绝不使用。即使方法抛出 StpException,也将其声明为好像抛出 WvcmException 一样。
- 方法绝不抛出新的 WvcmException。尽管异常可表示为 WvcmException,该它始终还是作为新的 StpException 抛出。
StpPropertyException
StpPropertyException 扩展 StpExtension ,并且它是与资源属性读/写相关联的错误的基本异常类。
从服务器请求属性值后,其名称将与结果相关联并存储在代理中。如果检索尝试成功,该名称将与检索到的值相关联;如果检索尝试不成功,该名称将与状态信息(以 StpPropertyException 对象的形式)相关联。
StpPartialResultsException
StpPartialResultsException 扩展 StpPropertyException ,并用于报告涉及多个资源的操作或属性的错误。它将替代通常由操作或属性返回的 ResourceList。它包含 ResourceList(具有已成功处理的资源的代理)和 StpException 的列表(每个 StpException 均与操作失败的资源对应)。有关详细信息,请参阅 Javadoc 信息。