|
Вопрос # 2 868/ вопрос открыт / |
|
Здравствуйте, эксперты!
Объясните, почему может не срабатывать блок try-except?
Написал вот такое выражение:
try
{выражение};
except
exit;
end;
В {выражении} происходит ошибка преобразования данных, но выхода их процедуры не происходит, а вылетает стандартная ошибка делфи с выходом в отладку. А я бы хотел, чтобы просто заканчивалась работа процедуры.
 |
Вопрос задал: Waserd (статус: Посетитель)
Вопрос отправлен: 31 мая 2009, 10:29
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Попробуй так:
var
Error: Boolean;
begin
// ..........
Error:= False;
try
{выражение};
except
Error:= True;
end;
if Error
then Exit;
// ..........
end;
Можно и не отлавливать исключение внутри этой функции. Тогда, при возникновении исключения выполнение функции останавливается и управление передаётся в блок, откуда эта функция была вызвана. А вот там и надо обернуть вызов этой функции в блок try ... except.
Цитата:
В {выражении} происходит ошибка преобразования данных
Если там есть вызов StrToInt(), StrToFloat() и т.п., то можно вообще не писать блок try ... except, а воспользоваться соответствующими аналогами TryStrToInt(), TryStrToFloat() и т.п.
З.Ы. Если включена опция Debugger Options --> Language Exceptions --> Stop on delphi exceptions, то сообщения об исключении всё равно будет вылетать.
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 31 мая 2009, 10:48
|
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 31 мая 2009, 13:05; участников в обсуждении: 3.
|
DNK (статус: Студент), 31 мая 2009, 11:36 [#1]:
Многим программистам это нисколько не мешает. Они просто продолжают выполнение программы, нажимая F9. В вашем случае начинает выполняться блок except. Кого напрягает - выключают Stop on delphi exceptions.
"Digital Networked Knight"
|
|
Waserd (статус: Посетитель), 31 мая 2009, 13:00 [#2]:
Спасибо, помогло, снял галку Stop on delphi exceptions.
|
|
min@y™ (статус: Доктор наук), 31 мая 2009, 13:05 [#3]:
"Спасибо" – это много.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|