powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Блоки try...end: когда можно использовать с пустой завершающей секцией?
25 сообщений из 32, страница 1 из 2
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39500610
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Расскажите, чем опасно применение try-finally-end с незаполненной секцией finally-end:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
try
   ...
   <код>
   ...
finally
  <пусто>
end



?
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39500611
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДРасскажите, чем опасно применение try-finally-end с незаполненной секцией finally-end:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
try
   ...
   <код>
   ...
finally
  <пусто>
end



?

Избыточным кодом, генерируемым компилятором.
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39500612
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДРасскажите, чем опасно
?

Возможно, заразно - сегодня ты try...finally end пишешь, а завтра начнешь try .. except end писать.
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39500615
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДРасскажите, чем опасно применение try-finally-end с незаполненной секцией finally-end:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
try
   ...
   <код>
   ...
finally
  <пусто>
end




?
Может бессмысленностью этого кода?)
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39500630
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
schiчччДРасскажите, чем опасно применение try-finally-end с незаполненной секцией finally-end:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
try
   ...
   <код>
   ...
finally
  <пусто>
end




?

Избыточным кодом, генерируемым компилятором.

а разве оптимизатор не должен пустые секции выбрасывать ?
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39500635
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДРасскажите, чем опасно применение try-finally-end с незаполненной секцией finally-end:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
try
   ...
   <код>
   ...
finally
  <пусто>
end



?
опасно отсутствием логики у применяющего данную конструкцию программиста :)
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39500642
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

В Delphi оптимизатор далек от совершенства.
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39500643
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
schidefecator,

В Delphi оптимизатор далек от совершенства.
да это понятно.
Просто пустой блок можно было бы очевидно выкинуть.
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39500941
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorПросто пустой блок можно было бы очевидно выкинуть.Блок начинается не с finally, a c try, который служит для сохранения параметров стека
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39500945
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
_Vasilisk_defecatorПросто пустой блок можно было бы очевидно выкинуть.Блок начинается не с finally, a c try, который служит для сохранения параметров стека
ты ещё забыл добавить "ваш кэп".

естественно, я знаю, откуда начинается блок
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39500948
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_defecatorПросто пустой блок можно было бы очевидно выкинуть.Блок начинается не с finally, a c try, который служит для сохранения параметров стека

Который служит для сохранения адреса предыдущего обработчика и назначения текущего, если быть точным.
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39500954
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД, ... когда можно использовать ... когда нужно begin end, а две лишних буковки жмакать лень.
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39501013
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно, пустые блоки finally-end обеспечивают лишь пассивную надежность кода. Но ведь даже такую надежность очень легко увеличить, используя нужный уровень вложенности:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
try
  try
    try
      <код>
    finally
    end
  finally
  end
finally
end
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39501024
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДКонечно, пустые блоки finally-end обеспечивают лишь пассивную надежность кода. Но ведь даже такую надежность очень легко увеличить, используя нужный уровень вложенности:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
try
  try
    try
      <код>
    finally
    end
  finally
  end
finally
end


можно еще увеличить надежность кода, например использовав 1024^2 вложенных try..finally..end
все хакеры помрут от испуга
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39501025
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДКонечно, пустые блоки finally-end обеспечивают лишь пассивную надежность кода. Но ведь даже такую надежность очень легко увеличить, используя нужный уровень вложенности:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
try
  try
    try
      <код>
    finally
    end
  finally
  end
finally
end



Клевало плохо ?
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39501546
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДКонечно, пустые блоки finally-end обеспечивают лишь пассивную надежность кода. Но ведь даже такую надежность очень легко увеличить, используя нужный уровень вложенности:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
ну пожалуйста
  ну пожалуйста
    ну пожалуйста
      ну попробуй!
    бл*...
  бл*...
бл*...
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39502036
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
if x=y then try .... finally end

while Z do try .... finally end

"пустые блоки можно выбросить" ?

------------

и вообще, о чем вы мечтаете, если Delphi/LLVM вообще не во всех try-блоках ловит исключения?
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39502052
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochif x=y then try .... finally end

while Z do try .... finally end

"пустые блоки можно выбросить" ?
А почему нет? Почему не заменить на begin-end?
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39502115
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockAriochif x=y then try .... finally end

while Z do try .... finally end

"пустые блоки можно выбросить" ?
А почему нет? Почему не заменить на begin-end?
Цикл выполнится, если в первом блоке вылетит птичка?
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39502116
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выбросить и заменить - не одно и то же.

пока же оптимизатор Delphi даже и с простыми try не до конца справляется
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39502131
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот вам! Для тех кто не имеет аккаунта на эмбе - там закрытый баг во вчерашнем обновлении. Суть его в том, что в некоторых случаях наличие try с пустым finally могло приводить в поломке кодогенерации с включенной оптимизацией
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39502144
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanYuRockпропущено...

А почему нет? Почему не заменить на begin-end?
Цикл выполнится, если в первом блоке вылетит птичка?а здесь без разницы, при возникновении исключения while Z do try .... finally end не выполнится ни в одном случае
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39502168
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochвыбросить и заменить - не одно и то же.

пока же оптимизатор Delphi даже и с простыми try не до конца справляется

Не до конца - это как ?
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39502181
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochвыбросить и заменить - не одно и то же.

пока же оптимизатор Delphi даже и с простыми try не до конца справляетсяОдно и то же в данном случае, т.к. try finally это составной оператор, как и begin end, просто там begin неявный, т.е. образно меняем try на begin и убираем finally и всё.
...
Рейтинг: 0 / 0
Блоки try...end: когда можно использовать с пустой завершающей секцией?
    #39502183
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_nigger А вот вам! Для тех кто не имеет аккаунта на эмбе - там закрытый баг во вчерашнем обновлении. Суть его в том, что в некоторых случаях наличие try с пустым finally могло приводить в поломке кодогенерации с включенной оптимизациейвообще try finally сложная конструкция. В ней и try-except-raise и передача управления после break/exit/continue в finally объединено. Запутаться немудрено компиляторописателям при этом. Но, блин, раньше ж работало всегда)
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Блоки try...end: когда можно использовать с пустой завершающей секцией?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]