Добавление исключения к операциям в Sparx Enterprise Architect

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

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

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

Изображение, показывающее класс

введите здесь описание изображения


person Makky    schedule 30.09.2011    source источник
comment
Какой продукт вы имеете в виду? Для меня это похоже на Sparx Enterprise Architect.   -  person John Saunders    schedule 04.10.2011


Ответы (1)


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

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

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

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

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

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

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

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

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

person Uffe    schedule 04.10.2011