![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() При реализации своих классов необходимо качественно отлавливать возможные ошибки. Желательно, чтобы в сообщениях об ошибке было указано - в каком исполняемом модуле (имя dll или exe), в каком логическом модуле (имя unit-a), в каком классе и в каком методе класса возникло исключение. Также желательно передавать при этом в конструктор исключения минимум информации - например, только ссылку на экземпляр класса - self. Остальные параметры должны быть опциональны. Кроме того, желательно предусмотреть возможность указывать уникальный идентификатор в каждое исключение, для чего хорошо подходит GUID.
Вот этот модуль умеет все это делать. использовать это просто: interface {$M+} TMyClass = class public procedure MyMethod; end; {$M-} implementation procedure TMyClass.MyMethod; begin try ... except on E: Exception do raise EClass.Create ([self,'MyMethod','Ошибка моего метода!',E], ['{F2BAAC2B-2617-4FC2-BEF1-F1F71D33DD19}']); end; end; при возникновении исключения в этом методе мы увидим что-то вроде: {F2BAAC2B-2617-4FC2-BEF1-F1F71D33DD19} Project1.exe::Unit1::TMyClass.MyMethod : Ошибка моего метода! : ESomeError удобно также, что данный способ дает возможность использовать вложенность исключений. жду критики и предложений |