Добавление исключения к операциям в Sparx Enterprise Architect - PullRequest
4 голосов
/ 30 сентября 2011

У меня есть диаграмма классов в Enterprise Architect.

Один из моих классов имеет несколько методов, и я хочу, чтобы мои методы вызывали исключение.Кто-нибудь имеет какие-либо идеи, как я могу это сделать?

Как и в Прикрепленном изображении, у меня есть интерфейс (HsaInterface), который имеет два метода, и я хочу, чтобы оба выдали исключение.

Изображение Показывает класс

enter image description here

1 Ответ

7 голосов
/ 04 октября 2011

Представление EA исключений, генерируемых операцией, немного грязно, а также плохо документировано. По сути, исключение представляется в виде единственного тегового значения в операции, содержащего (неквалифицированные) имена классов исключений в списке через запятую.

Например, метод parseLine в классе Java com.sun.activation.registries.MailcapFile будет иметь тег throws со значением MailcapParseException,IOException.

Если вы создаете операцию в классе, эта операция автоматически не получает тег для исключений. Это потому, что имя тега зависит от языка реализации; это «throw» для SystemC и «throws» для C # и Java (в любом случае, согласно руководству, я этого не проверял). Однако вы можете создать тег самостоятельно.

Если вы перепроектируете набор классов Java, теги исключений будут заполнены в модели. Это может быть самый простой способ увидеть, как это используется.

Эта ссылка только на имя, очевидно, очень слабая. Он используется при генерации кода, но если вы измените имя класса исключения, вам нужно будет изменить значение тега вручную. EA не проверяет, существуют ли перечисленные имена классов или находятся в области действия при генерации кода, он просто записывает имена в сигнатуру метода.

Кроме того, помеченные значения для операций не могут быть отображены на диаграммах. Таким образом, хотя вы можете добавлять исключения к своим операциям, вы можете видеть их, только просматривая свойства операций.

Интересно, что модель данных EA включает столбец Throws в таблице t_operation (и, следовательно, атрибут Throws в классе Method в API EA). Это кажется неиспользованным.

Так что все сводится к цели вашей модели. Если вы будете генерировать код на одном из языков, где EA поддерживает исключения, вам нужно добавить тег throws вручную. Если вы хотите показать исключения на диаграммах, этот подход не работает. Для этой цели лучше нарисовать зависимость от операции к классу исключений и стереотипировать ее как «бросает».

Чтобы прикрепить соединитель к операции, как обычно, выведите его из класса, затем щелкните правой кнопкой мыши соединитель рядом с концом, который вы хотите привязать, и выберите «Ссылка на элемент».

...