|
|
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
svenomstepplerusСмишно. И Вы уверены, что между canWrite() и write() ничего никогда не успеет произойти? Таки у меня для Вас плохие новости.У меня для вас новости еще хуже - при вашем подходе у нас имеет место быть точно такая же проблема, ибо от момента получения ошибки OS до момент ее обработки с файлом точно так же может произойти все, что угодно. То есть, вот авторы новой редакции совсем лохи, да? public static void delete(Path path) throws IOException Чорт, даже void, даже не boolean. "Я знал, я знал" (С) Идите уже, почитайте нормальные книги, как правильно программы писать. Учителя, е-мое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 16:59:16 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
stepplerusИдите уже, почитайте нормальные книги, как правильно программы писать.Т.е. вы по прежнему не осознаёте, что сравниваете две разные модели? И даже то, что это два разных класса двух разных пакетов - вас совершенно не останавливает? А книжки, да, надо почитать. Вам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 17:03:04 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovstepplerusТо есть - не будет . Ну и к чему были все предыдущие выкрутасы? Чего бы сразу не сказать, что с определенной версии все сделано нормально? При том, что часть форумчан именно это сразу и сказало? О чем спор-то был? О том, что если это JAVA, то в ней все всегда хорошо и замечательно что-ли? Или о чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 17:03:57 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
Да. В java отошли от канонов системного программирования на языке Си, когда каждый метод, делающий сайд эффект, должен возращать integer. Точка. Что еще можно обсуждать? Это данность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 17:06:31 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovstepplerusА железный переходник делается ничуть не сложнее, а то и проще, чем программный.С болта М9 на гайку М6???В чем сарказм-то?В мелочах. Гм. Два прохода по цлиндрической заготовке. С одной стороны отверстие и метчик на М9, с другой - плашка на М6. Или еще проще - стачиваем на болте три лишних миллиметра и плашка на М6. картинка про троллейбус из буханки.jpg ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 17:06:34 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
stepplerusНу и к чему были все предыдущие выкрутасы?Т.е. вы даже не удосужились посмотреть какую именно ссылку я вам предоставил???Чего бы сразу не сказать, что с определенной версии все сделано нормально?С определённой версии "всё" сделано по другому. Вам может быть и нормально, а кому-то - без разницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 17:06:45 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
stepplerusГм. Два прохода по цлиндрической заготовке. С одной стороны отверстие и метчик на М9, с другой - плашка на М6. Или еще проще - стачиваем на болте три лишних миллиметра и плашка на М6.До вас по-прежнему не доходит, что программирование - единственная отрасль, где можно изготовить такой переходник не перетачивая ни болт, ни гайку. Такая возможность сама по себе - ни хорошо ни плохо. Плохо считать, что (не)использование такой возможности - единственно верное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 17:10:09 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
stepplerussvenomпропущено... У меня для вас новости еще хуже - при вашем подходе у нас имеет место быть точно такая же проблема, ибо от момента получения ошибки OS до момент ее обработки с файлом точно так же может произойти все, что угодно. То есть, вот авторы новой редакции совсем лохи, да? public static void delete(Path path) throws IOException Чорт, даже void, даже не boolean. "Я знал, я знал" (С) Идите уже, почитайте нормальные книги, как правильно программы писать. Учителя, е-мое.Почему же лохи? Просто описанная вами проблема - когда от момента возникновения ошибки до ее обработки что-то может изменить состояние файла - не решаема в рамках JVM, хоть вы boolean возвращайте, хоть код ошибки ОС, хоть бросайте эксепшн. Поэтому с точки зрения прикладного программиста проблема обработки ошибок работы с файлом принципиально будет решаться одинаково хоть в JVM6, хоть в JVM7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 17:14:37 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
svenomstepplerusпропущено... При каком "моем"? Уточните, пожалуйста.При гипотетической передаче в JVM кода ошибки OS или при инициации исключения. При любом из этих трех вариантов, в момент обработки ошибки вам никто не даст гарантии, что со времени возникновения ошибки и до момента ее обработки с файлом ничего не произошло. Ну, коллизия ложного несрабатывания мне известна. Когда все хорошо, но сигнал об этом до получателя дойти не успевает. В долгих интеграционных потоках это, обычно, обрабатывается. А у нас файл благополучно удалился, и что? Тут операционная система отваливается и не успевает ничего рассказать об этом JVM? И JVM считает что произошла ошибка? Так она действительно произошла. И это приведет лишь к тому, что обработка остановится на шаг раньше, чем если бы авария произошла после передачи сигнала об успешном выполнении, так как после аварии на ОС(устройстве) ничего с ним сделать не получится. Или устройство тут же починится? Так для этого таймауты придуманы. Ну а файл удалится, да. А я буду думать, что нет. Так и есть. И что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 17:16:19 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovstepplerusИдите уже, почитайте нормальные книги, как правильно программы писать.Т.е. вы по прежнему не осознаёте, что сравниваете две разные модели? И даже то, что это два разных класса двух разных пакетов - вас совершенно не останавливает? А книжки, да, надо почитать. Вам. В той редакции, которая сейчас стоит у меня - nio.Files нет вообще. Поэтому, правильный вывод: использовать File для тех целей, для которых я собирался его использовать - нельзя. Собственно, это и был правильный ответ на мой вопрос. И его я получил в самом начале от квалифицировнных специалистов. В чем вы пытались меня убедить - совершенно непонятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 17:21:44 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovstepplerusГм. Два прохода по цлиндрической заготовке. С одной стороны отверстие и метчик на М9, с другой - плашка на М6. Или еще проще - стачиваем на болте три лишних миллиметра и плашка на М6.До вас по-прежнему не доходит, что программирование - единственная отрасль, где можно изготовить такой переходник не перетачивая ни болт, ни гайку. Такая возможность сама по себе - ни хорошо ни плохо. Плохо считать, что (не)использование такой возможности - единственно верное решение. Первый вариант и был "не болт ни гайку", а переходник. Третью деталь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 17:23:00 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
svenomstepplerusпропущено... То есть, вот авторы новой редакции совсем лохи, да? public static void delete(Path path) throws IOException Чорт, даже void, даже не boolean. "Я знал, я знал" (С) Идите уже, почитайте нормальные книги, как правильно программы писать. Учителя, е-мое.Почему же лохи? Просто описанная вами проблема - когда от момента возникновения ошибки до ее обработки что-то может изменить состояние файла - не решаема в рамках JVM, хоть вы boolean возвращайте, хоть код ошибки ОС, хоть бросайте эксепшн. Поэтому с точки зрения прикладного программиста проблема обработки ошибок работы с файлом принципиально будет решаться одинаково хоть в JVM6, хоть в JVM7. Ну, у методов либо есть атомарность, либо нет. И да, устройство может отвалиться после того, как я открою файл. А в юниксах его могут еще и удалить пока я его читаю. Но в этих случаях я расчитываю получить именно ту ошибку, которая произошла и именно при той операции, которую я делаю. А не так, что я проверил, что файл есть, открываю его, а его нет. А ошибку уже не обрабатываю. Зачем? Я же уже проверил, что файл есть. Что за ерунда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 17:32:39 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
stepplerusВ той редакции, которая сейчас стоит у меня - nio.Files нет вообще.Даже если предположить, что вы не устанавливали документацию локально (я не устанавливаю), то на пророчьем-то сайте вас, надеюсь, не забанили? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 17:37:02 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
stepplerusА не так, что я проверил, что файл есть, открываю его, а его нет. А ошибку уже не обрабатываю. Зачем? Я же уже проверил, что файл есть. Что за ерунда?Вас опять подводит нечтение документации. Во всех версиях эта ошибка обрабатывается одинаково - jvm кидает исключение. А уж вы решаете как именно его обрабатывать и обрабатывать ли вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 17:40:07 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
stepplerussvenomпропущено... Почему же лохи? Просто описанная вами проблема - когда от момента возникновения ошибки до ее обработки что-то может изменить состояние файла - не решаема в рамках JVM, хоть вы boolean возвращайте, хоть код ошибки ОС, хоть бросайте эксепшн. Поэтому с точки зрения прикладного программиста проблема обработки ошибок работы с файлом принципиально будет решаться одинаково хоть в JVM6, хоть в JVM7. Ну, у методов либо есть атомарность, либо нет. И да, устройство может отвалиться после того, как я открою файл. А в юниксах его могут еще и удалить пока я его читаю. Но в этих случаях я расчитываю получить именно ту ошибку, которая произошла и именно при той операции, которую я делаю. А не так, что я проверил, что файл есть, открываю его, а его нет. А ошибку уже не обрабатываю. Зачем? Я же уже проверил, что файл есть. Что за ерунда?Речь шла не про предварительные проверки перед совершением операции, а про определение источника ошибки после ее возникновения - 13083383 . То есть в старой редакции (до 7), когда возникает ошибка, мы не знаем, чем она была вызвана. Для этого мы, если нам это требуется, производим определенные проверки - есть ли файл на месте, есть ли у нас права, и т.д.. По итогам этих проверок мы решаем, что делать дальше. В JVM7 мы уже получаем вменяемое описание ошибки. Так вот, смысл заключается в том, что с точки зрения обработки исключительной ситуации у нас может возникнуть race condition как в первом случае, так и во втором. Когда, например, мы поняли, что папка не удалилась, так как они не пустая, мы начинаем ее очищать, но кто-то другой уже сделал это - то есть мы впустую потратили время. Поэтому с точки зрения простоты использования, редакция JVM7, разумеется, выглядит более привлекательно, спору нет. Но с точки зрения семантики обработки исключений принципиально не меняется абсолютно ничего, ибо ни первый, ни второй подход не дают нам гарантий того, что имеющиеся у нас сведения о произошедшей ошибки не устарели к тому моменту, когда мы приступаем к ее обработке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 17:45:15 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovstepplerusА не так, что я проверил, что файл есть, открываю его, а его нет. А ошибку уже не обрабатываю. Зачем? Я же уже проверил, что файл есть. Что за ерунда?Вас опять подводит нечтение документации. Во всех версиях эта ошибка обрабатывается одинаково - jvm кидает исключение. А уж вы решаете как именно его обрабатывать и обрабатывать ли вообще. Дык. Эта. Проблема то как раз в том, что у File.delete() нет исключений (в SE5). То о чем вы со swenom толкуете тоже понятно. Так приходится делать, когда вызываешь внешнюю программу, которая вообще ничего не возвращает например. Если она создает, скажем, файл, то, после ее вызова, приходится в явном виде проверять, что такой файл действительно появился. Или, что количество файлов после совпадает с количеством файлов до. Или еще какую-нибудь подобную фигню. Но внутри одной системы хотелось бы этого избегать всеми возможными силами. Теперь я знаю способ, как этого добиться. Можно сказать, что цель данного обсужения успешно достигнута. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 18:12:26 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovstepplerusВ той редакции, которая сейчас стоит у меня - nio.Files нет вообще.Даже если предположить, что вы не устанавливали документацию локально (я не устанавливаю), то на пророчьем-то сайте вас, надеюсь, не забанили? А могут? А по сути дела: import static java.nio.file.* дает фигвам import static java.nio.file.StandardCopyOption.*; дает аналогичный фигвам Логично предположить, что у меня этих пакетов просто нет. А раз нет у меня, то и в других местах они без специальных пинков не появятся. Зато теперь есть основания для пинков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 18:17:20 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovstepplerusА не так, что я проверил, что файл есть, открываю его, а его нет. А ошибку уже не обрабатываю. Зачем? Я же уже проверил, что файл есть. Что за ерунда?Вас опять подводит нечтение документации. Во всех версиях эта ошибка обрабатывается одинаково - jvm кидает исключение. А уж вы решаете как именно его обрабатывать и обрабатывать ли вообще. Да больной какой-то. "Я хочу чтоб было так как я хочу" - ну сделай так как хочешь. Но работать будет так как написано в документации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 18:19:51 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
stepplerusМожно сказать, что цель данного обсужения успешно достигнута. считаю страниц в топике пока не достаточно, так что рано расслаблять булки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 18:27:56 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
chpashastepplerusМожно сказать, что цель данного обсужения успешно достигнута. считаю страниц в топике пока не достаточно, так что рано расслаблять булки Да без проблем, продолжайте. Форум, слава богам, пока общий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 18:29:37 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
1024Basil A. Sidorovпропущено... Вас опять подводит нечтение документации. Во всех версиях эта ошибка обрабатывается одинаково - jvm кидает исключение. А уж вы решаете как именно его обрабатывать и обрабатывать ли вообще. Да больной какой-то. "Я хочу чтоб было так как я хочу" - ну сделай так как хочешь. Но работать будет так как написано в документации. Да, будет так, как в документации. Но обсуждалось то не это, вы не заметили? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 18:30:34 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
stepplerusДык. Эта. Проблема то как раз в том, что у File.delete() нет исключений (в SE5).Вы как-то сумбурно перескакиваете с предмета на предмет. В том что вы поскипали было: "А не так, что я проверил, что файл есть , открываю его, а его нет. А ошибку уже не обрабатываю. Зачем? Я же уже проверил, что файл есть. Что за ерунда?". Если файл существует и собираетесь его открывать, то причём здесь delete()? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 19:37:51 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
Да мне кажется степл норм чувак, он уже давно все понял, просто гордость не позволяет признать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 19:43:26 |
|
||
|
Простой вопрос про finally
|
|||
|---|---|---|---|
|
#18+
stepplerusЕсли она создает, скажем, файл, то, после ее вызова, приходится в явном виде проверять, что такой файл действительно появился. Или, что количество файлов после совпадает с количеством файлов до. Или еще какую-нибудь подобную фигню. Но внутри одной системы хотелось бы этого избегать всеми возможными силами.Зачем, если без особых проблем может быть сделано примерно так: Код: java 1. 2. 3. 4. 5. 6. 7. Всё - есть массив с "правильным", на момент проверки, содержимым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 19:56:02 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37936181&tid=2131051]: |
0ms |
get settings: |
11ms |
get forum list: |
23ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
47ms |
get topic data: |
18ms |
get forum data: |
5ms |
get page messages: |
95ms |
get tp. blocked users: |
2ms |
| others: | 296ms |
| total: | 509ms |

| 0 / 0 |
