Последняя версия DataExpress 3 beta от 12 февраля 2020 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

Как правильно писать try except finally end

Все о том как сделать что-то с помощью скриптов.
Kiss
Интересующийся
Сообщения: 192
Зарегистрирован: Вт мар 14, 2017 11:41 am
Откуда: Гомель, Беларусь
Благодарил (а): 6 раз
Поблагодарили: 9 раз

Как правильно писать try except finally end

Сообщение Kiss » Пт июл 12, 2019 3:30 pm

Как правильно?
Так?

Код: Выделить всё

begin
  try
    try
      // Пробуем код
    except
      // Если не сработало, то этот код
    end;
  finally
    // Код, который по-любому надо выполнить в конце
  end;
end;

Или и так?

Код: Выделить всё

begin
  try
    // Пробуем код
  except
    // Если не сработало, то этот код
  finally
    // Код, который по-любому надо выполнить в конце
  end;
end;
Или DX поймет и первый и второй примеры?

Аватара пользователя
Develop-Soft
Сообщения: 1217
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 114 раз
Поблагодарили: 288 раз
Контактная информация:

Как правильно писать try except finally end

Сообщение Develop-Soft » Пт июл 12, 2019 3:35 pm

В принципе оба варианта правильные...

Kiss
Интересующийся
Сообщения: 192
Зарегистрирован: Вт мар 14, 2017 11:41 am
Откуда: Гомель, Беларусь
Благодарил (а): 6 раз
Поблагодарили: 9 раз

Как правильно писать try except finally end

Сообщение Kiss » Пт июл 12, 2019 3:38 pm

Ясно. Спасибо)

Аватара пользователя
Develop-Soft
Сообщения: 1217
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 114 раз
Поблагодарили: 288 раз
Контактная информация:

Как правильно писать try except finally end

Сообщение Develop-Soft » Пт июл 12, 2019 3:42 pm

Первый вариант подразумевает какие-то мудреные вложенные действия. Если действия простые, то второй практичнее использовать.

kok80
Эксперт
Сообщения: 325
Зарегистрирован: Пн июл 02, 2018 9:45 pm
Благодарил (а): 2 раза
Поблагодарили: 22 раза

Как правильно писать try except finally end

Сообщение kok80 » Ср июл 17, 2019 11:25 pm

первый вариант для тех случаев, когда между TRY и TRY может быть еще код, возможное исключение в котором не будет обрабатываться (ибо нет Except). В нынешнем описании должны одинаково работать оба варианта.

Kiss
Интересующийся
Сообщения: 192
Зарегистрирован: Вт мар 14, 2017 11:41 am
Откуда: Гомель, Беларусь
Благодарил (а): 6 раз
Поблагодарили: 9 раз

Как правильно писать try except finally end

Сообщение Kiss » Ср авг 07, 2019 4:06 pm

Это я писал к тому - какая конструкция будет "православнее" что-ли.
Смысл в том, что в одном блоке по идее должно быть только 3 ключа try, except и end или try, finally и end и в них уже правильно вкладывать что-то (по кр. мере в справочниках по Delphi все пишут как-то так)
или вариант со всеми 4-мя try, except, finally и end тоже заложен разрабами, как норма и не будет чем-то неправильным, хоть и рабочим)

Kiss
Интересующийся
Сообщения: 192
Зарегистрирован: Вт мар 14, 2017 11:41 am
Откуда: Гомель, Беларусь
Благодарил (а): 6 раз
Поблагодарили: 9 раз

Как правильно писать try except finally end

Сообщение Kiss » Ср авг 07, 2019 4:11 pm

Во как пишут) http://www.delphibasics.ru/Try.php
2019-08-07_16-10-11.png
2019-08-07_16-10-11.png (7.73 КБ) 704 просмотра

Vofka18
Опытный
Сообщения: 308
Зарегистрирован: Вс мар 04, 2018 4:54 pm
Благодарил (а): 19 раз
Поблагодарили: 25 раз

Как правильно писать try except finally end

Сообщение Vofka18 » Вт янв 21, 2020 10:25 pm

Тоже вопрос по теме try except finally end :)
Если внутри try finaly end вызвать команду exit, всегда будет отрабатывать finaly, в которую записана очистка памяти? или перед вызовом exit лучше очистить память?

jurist23rus
Эксперт
Сообщения: 2675
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп
Благодарил (а): 2 раза
Поблагодарили: 17 раз

Как правильно писать try except finally end

Сообщение jurist23rus » Ср янв 22, 2020 6:18 am

Если exit вызвать в блоке try, то код в блоке finally будет выполнен и память очищена.
Destiny is a very convenient word for those who never take decisions.