При реализации своих классов необходимо качественно отлавливать возможные ошибки. Желательно, чтобы в сообщениях об ошибке было указано - в каком исполняемом модуле (имя 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
удобно также, что данный способ дает возможность использовать вложенность исключений.
жду критики и предложений