在Sparx Enterprise Architect中为操作添加Exception

时间:2011-09-30 13:27:53

标签: exception uml enterprise-architect

我在Enterprise Architect中有一个类图。

我的一个类有一些方法,我希望我的方法抛出异常。有什么想法我怎么能这样做?

在附加图像中我有接口(HsaInterface),它有两个方法,我想要两个抛出异常。

图像显示类

enter image description here

1 个答案:

答案 0 :(得分:7)

EA对操作抛出的异常的表示有点混乱,而且记录也很差。实质上,异常由操作上的单个标记值表示,在逗号分隔列表中携带异常类的(非限定)名称。

例如,Java类parseLine中的方法com.sun.activation.registries.MailcapFile的标记throws的值为MailcapParseException,IOException

如果在类中创建操作,则该操作不会自动获取异常标记。这是因为标签名称取决于实现语言;它是SystemC的“抛出”和C#和Java的“抛出”(根据手册无论如何,我还没有验证这一点)。但是,您可以自己创建标记。

如果对一组Java类进行反向工程,则将在模型中填充异常标记。这可能是查看其使用方式的最简单方法。

这个仅限名称的链接显然非常弱。它用于代码生成,但如果更改异常类的名称,则需要手动更改标记值。 EA在代码生成期间不检查列出的类名是否存在或是否在范围内,它只是将名称写入方法签名。

此外,操作中的标记值无法在图表中显示。因此,虽然您可以为操作添加例外,但只能通过查看操作的属性来查看它们。

有趣的是,EA的数据模型确实在t_operation表中包含了一个Throws列(因此,在EA的API中的Method类中包含了Throws属性)。这似乎未被使用。

因此,归结为模型的目的。如果您将使用EA支持异常的其中一种语言生成代码,则需要手动添加throws标记。如果要在图表中显示异常,则该方法不起作用。出于这样的目的,你最好从操作到异常类绘制一个依赖关系,并将它定型为“抛出”。

为了将连接器锚定到某个操作,请像往常一样从类中绘制它,然后右键单击要锚定的末端附近的连接器,并选择“链接到元素功能”。