Вверх ↑
Этот топик читают: Гость
Ответов: 5446
Рейтинг: 323
#1: 2009-08-09 14:02:02 ЛС | профиль | цитата
В процессе создания компонента для доступа к свойствам объекта-исключения я понял, что тот метод визуализации exception handling, который я избрал для пакета Python, не подходит для начинающих программистов, да и "опытным" программистам придётся не очень-то по вкусу. В связи с этим я решил обратиться к сообществу с предложением устроить "мозговой штурм" этой проблемы.

Некоторые замечания:
1) Важен порядок, в котором записаны обработчики исключений, ибо обработчик класса-родителя будет выбран для обработки классса-потомка, если встретится раньше
2) Важна прямая визуальная связь между компонентом Try..Except, защищаемым блоком (Try-блок), блоками "если что-то пошло не так" (Except-блоки), "если всё ок" (Else-блок) и "завершающим" блоком (Finally-блок) - иначе к чему весь огород
3) Важет доступ к членам классов-исключений: например, IOError содержит поля errno, filename и strerror, а ZeroDivisionException их не содержит. У всех (мыслимых) исключений есть поля args и message
4) Желательно разделить работу с исключениями на "простой" и "сложный" уровни. При "простой" обработке, в ответ на исключение (любое!) выдаётся строковое представление этого исключения. При "сложной" обработке у программиста есть возможность писать различные обработчики для различных исключений, с доступом к объекту-исключению.

В качестве затравки предлагаю свои размышления:

Схема I
Есть компонент Try, который начинает блок TryExcept (метод doTry), у него события onTry (вход в защищаемый блок), onExcept (в зависимости от св-ва "Режим" выдаёт либо строку, либо объект-исключение), onElse и onFinally - входы в соответствующие блоки. С точкой onExcept (при "сложной" обарботке) можно линковать только hub/hubEx либо компоненты-обработчики исключений (SomeError).

Есть (много) компонентов SomeError, которые имеют один метод doSomeError, одно событие onSomeError, плюс набор Var-точек для доступа к свойствам.

Плюс: визуальность сохранена (по большей части)
Минус: ограничения на горизонтальное подключение - этого в HiAsm еще не было (не считая пакета Web и контейнеров-коллекторов).

Схема II
В целом совпадает с первой, только компоненты Try и SomeError являются контейнерами a-la HTMLCollector, с фиксированными Work- и Event-точками.

Плюс: ещё больше визуальности
Минус: некая нестандартность подхода

Что скажет уважаемое сообщество? А может, у кого-нибудь есть ещё схемы? Буду рад услышать.
карма: 1

0
vip
#1.1контекстная реклама от партнеров
1
Сообщение
...
Прикрепленные файлы
(файлы не залиты)