Получаете ли вы код исключения (а не захваченное исключение, которое вам нужно), когда вы запускаете его из среды IDE, или также когда вы запускаете его из исполняемого файла напрямую? Причина, по которой я спрашиваю, состоит в том, что IDE сначала сообщит об ошибке / исключении, и если вы не продолжите, вы никогда не увидите фактическую ловушку исключения.
Возможно отключить перехват IDE для определенных типов ошибок, хотя в среднем я не люблю этого делать. Вы можете проверить, не в этом ли проблема, запустив приложение самостоятельно, за пределами Delphi IDE.
Кроме того, код, который вы изначально написали, должен предотвращать всплытие всех ошибок на поверхность, что, вероятно, не то, что вам нужно. Точно так же, если вы хотите, чтобы оно выглядело лучше, вы можете отобразить сообщение, как показано ниже, а затем обработать его.
try
CDS.CommandText := 'SELECT * FROM tablename WHERE fieldname = 1';
CDS.Open
except
on E: Exception do begin
ShowMessage(E.Message);
// optionally Exit, Abort or what else, to stop execution of the next statements
end;
end;