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



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



?

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

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




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




?

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

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



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

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

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

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

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

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

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



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

while Z do try .... finally end

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

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

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

while Z do try .... finally end

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

while Z do try .... finally end

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

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

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

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

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

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


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