Используйте конструкцию

Code:

{©Drkb v.3(2007):https://delphi-hlp.ru}

Try

{здесь вы пишите код в котором может произойти ошибка}

Finally

{здесь вы пишите код который выполнится в любом случае - хоть произойдёт ошибка, хоть нет}

End

 

Например, это часто применяется во избежание утечек при динамическом распределении памяти:

Code:

{©Drkb v.3(2007): https://delphi-hlp.ru}

t:TStringList;

...

t:=TStringList.create; //распределили память под объект t

Try

{здесь работаем с переменной t}

Finally

t.free;//память выделенная под объект t всегда будет освобождена

End

Code:

{©Drkb v.3(2007): https://delphi-hlp.ru}

raise Exception.Create('Это моя ошибка! Сам что хочу то и пишу здесь!')

 

 

Примечание: в отличие от других объектов, объекты типа Exception или других классов, унаследованных от Exception не требуют вызова деструкторов или любых других действий по освобождению памяти после их создания.

Иногда выскакивают ошибки типа "Internal Error SY424", вот расшифровка префиксов: B : debugger BC : debugger BR : browser C : codegen CM : command line version of the compiler D : parser

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

 

1) Обращение к не созданному объекту.

 

Code:

var e:TEdit;

 

begin

e.text:='Hello world!';

end;

 

В данном случае объект e ещё не создан и идёт обращение к памяти, которая ещё не выделена.