UML 异常处理符号

UML Exception Handler Notation

UML activity 图中异常处理程序的表示法是什么?难道只是闪电?还是更多?

根据规范 v2.5.1 第 404 页:

An ExceptionHandler is shown by drawing a “lightning bolt” symbol from the boundary of the protectedNode to a small square on the boundary of the ExceptionHandler.

对我来说,这听起来像是一个递归的解释。

根据抽象语法(第 403 页),异常处理程序是其受保护节点的一部分,并与 handlerBody (ExecutableNode)、exceptionInput (ObjectNode) 和 exceptionTypes (Classifier) 相关联。

我的理解是,异常处理程序只是一道闪电。 handlerBody、它的 objectNode 和 protectedNode 是使用它们自己的符号的独立实体。

有人能澄清一下吗?

规范中的措辞有时令人困惑。闪电是一个中断流,处理程序是一个 ExecutableNode。规范中有很多示例(UML 2.5 的第 403 页)

您需要四件事来显示 AD 中的异常处理:

  • 一些Action(我省略了控制流程from/to其他操作)
  • 一个InterruptibleActivityRegion(虚线边界)
  • 一个ExceptionHandler和一个ObjectNode接受异常
  • InterruptFlow(由螺栓显示)

你只能让螺栓离开可中断区域。和通常的对象流一样,您可以将守卫附加到该螺栓上。

为了显示异常处理的详细信息,您可以将调用行为放在处理程序中。

要指定异常类型,您可以按照 p.1 的规范中所示进行操作。 UML 2.5 的 403:

你是对的,抽象语法对我来说似乎比描述更清楚。

异常处理程序可能看起来像一个边缘。 它由它的源拥有,也就是异常处理程序的 protectedNode,并引用它的目标,在异常处理程序的情况下也就是 exceptionInput(由 handlerBody 拥有)。

当然,在大多数情况下,protectedNode 和 handlerBody 是两个不同的可执行节点,具有自己的符号(结构化 Activity、动作等)。

最后一点是异常类型分类器,它是对模型上任何分类器的引用。

希望它能澄清事情。 EBR

你是对的 - ExceptionHandler 是一道闪电。

根据下面的抽象语法图,ExceptionHandler 是一个 Element,表示其他四个实例之间的关系:ExecutableNode (protectedNode), ExecutableNode (handlerBody), ObjectNode (exceptionInput) 和 Classifier (exceptionType)

所以文档大部分是准确的(经过我的小修改——我用 handlerBody 替换了第二个 ExceptionHandler):

The notation for ExceptionHandlers is illustrated in Figure 15.62. An ExceptionHandler is shown by drawing a “lightning bolt” symbol from the boundary of the protectedNode to a small square on the boundary of the handlerBody. The name of the exceptionType is placed next to the lightning bolt. The small square is the exceptionInput node.