powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Простой вопрос про finally
124 сообщений из 124, показаны все 5 страниц
Простой вопрос про finally
    #37931810
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

JAVA я начал осваивать недавно, поэтому многие вещи в ней мне кажутся, мягко говоря, странными.

Например.

У меня есть некий метод, в котором я сначала создаю некий файл, потом что-то с ним делаю, в самом конце мне его нужно удалить.
Без особых сомнений пришу следующий код:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public void processFile (String Name) trows IOException {
    File WorkFile;

    try {
       WorkFile = new File (Name);
       ....
    }
    catch ...
    finaly {
       if (WorkFile.exists()) { WorkFile.delete(); }
    }
}



На что компилятор (видимо, резонно) возражает мне - "переменная WorkFile может быть не определена".
Я даже, где-то с ним согласен. В другом языке я написал бы что-то вроде if valid-handle(WorkFile) или if WorkFile != null, и был бы счастлив. Но тут, если я все правильно понимаю, ничего из этого мне не поможет.

Получается, что в finally нельзя использовать никакие переменные, которые были инициализированы в разделе try этой же процедуры.
Собственно, вопрос - а что вообще можно использовать в секции finally? И как правильно следует решать задачи подобные приведенной?

ЗЫ. Написать в finally TempFile = new File (Name) не предлагайте, это тривиально и мало где подойдет.

Спасибо.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931825
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public void processFile (String Name) trows IOException {
    File WorkFile = null;

    try {
       WorkFile = new File (Name);
       ....
    }
    catch ...
    finaly {
       if (WorkFile != null && WorkFile.exists()) { WorkFile.delete(); }
    }
}
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931835
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerus,
почитайте про области видимости переменных, try и finally тут ни при чем.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931848
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТимоН,

Увы, так тоже не работает. Та же ошибка.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931854
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее не про видимость переменных, так как с этим тут все в порядке, а с выделением памяти в Java.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931856
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javapecker,

Что не так с видимостью? С видимостью все хорошо. Переменная WorkFile, безусловно, видна внутри finally. Но вот с ее инициализацией, действительно, могу быть проблемы. Кстати, при неверно понятой области видимости, ошибка была бы другая: "символ не найден".
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931859
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerus,
прощу прощения, невнимательно посмотрел
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931868
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusУвы, так тоже не работает. Та же ошибка.
не может быть, проверьте еще раз.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931876
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТимоН,

Тем не менее:

CopyPictureCatalog.java:157: variable WorkFile might not have been initialized
if (WorkFile != null) {
^
1 error
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931885
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerus, не может быть, сам только что проверил
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931895
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusТимоН,

Тем не менее:

CopyPictureCatalog.java:157: variable WorkFile might not have been initialized
if (WorkFile != null) {
^
1 error
Присвоить значение переменной не забыли?
Код: java
1.
2.
3.
...
File WorkFile = null;
...
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931899
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, stepplerus!
> Автор: stepplerus. ТимоН,
>
> Тем не менее:

Точно в третьей строке написано
Код: sql
\r\nFile WorkFile = null;\r\n
\r\n а не
как было,
Код: sql
\r\nFile WorkFile;\r\n
\r\n?


--
Алексей
JID: alxt@ya.ru


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931900
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тем не менее,
javapeckertry и finally тут ни при чем.
В джаве просто запрещено использование неинициализированных локальных переменных.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931901
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javapecker,

Вот, простой пример:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
import java.io.*;

public class TestClass {

   public TestClass () {}

   public void TestMethod (String Name) throws IOException, Exception  {
      File WorkFile;
      try {
         WorkFile = new File (Name);
      }
      catch( Exception Exc ) {
         Exc.printStackTrace();
      }
      finally{
         if ( WorkFile != null) {
         }
      }
   }
}



У меня ошибка воспроизводится.
Моя ЯВА так устарела?
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931903
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GKS_SamaraДобрый день, stepplerus!
> Автор: stepplerus. ТимоН,
>
> Тем не менее:

Точно в третьей строке написано
Код: sql
\r\nFile WorkFile = null;\r\n
\r\n а не
как было,
Код: sql
\r\nFile WorkFile;\r\n
\r\n?


Воооот!!!

Спасибо.
--
Алексей
JID: alxt@ya.ru
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931906
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerus, не устарела, вы просто еще невнимательнее чем я)
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931907
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну во-первых в java принято называть переменные с маленькой буквы File workFile = .. Так легче визуально отличить вызов статических методов от нестатических.
Далее, если ваша задача конкретно поработать с файлом потом удалить его, то лучше делать такЖ
Код: java
1.
2.
3.
4.
File temp = File.createTempFile("pattern", ".suffix");

    // Delete temp file when program exits.
    temp.deleteOnExit();



Третье, вариант Тимона должен работать, вы его хоть пытались запустить?
Четвертое, вам действительно надо разобраться с моментом выделения памяти под объекты. В java обьявление переменной это всего лишь обьявление, память при этом не выделяется, особым случаем является присваивание ссылке значения null. Компилятор вам всем правильно говорит. Классическая идиома такая:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Object obj = null;
try{
obj = init();
}catch(Exception e){
//handle
}finally{
if(obj != null){
obj.cleanup();
}
}
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931918
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusjavapecker,

Вот, простой пример:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
import java.io.*;

public class TestClass {

   public TestClass () {}

   public void TestMethod (String Name) throws IOException, Exception  {
      File WorkFile;
      try {
         WorkFile = new File (Name);
      }
      catch( Exception Exc ) {
         Exc.printStackTrace();
      }
      finally{
         if ( WorkFile != null) {
         }
      }
   }
}




У меня ошибка воспроизводится.
Моя ЯВА так устарела?чоза тупняк-то вконце концов

Код: plaintext
1.
2.
3.
4.
5.
6.
1. File WorkFile; // в этом месте переменная не инициализирована совсем

2. try {
         WorkFile = new File (Name); // в этом месте конструктор File может выбросить исключение и переменная WorkFile останется неинициализированой ( это ведь каждом читателю понятно, да? )

3. finally{
         if ( WorkFile != null) { // компилятор, исходя из п.2, сообщает о том, что переменная WorkFile может быть не определена

что тут странного-то?
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37931941
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grasoff.net,

Да, в общем, уже все хорошо.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37932203
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не, странная эта штука - Java.

С одной строны, есть метод renameTo(), который переименовывает даже между различными устройствами (чего ни одна ОС не делает). То есть, сначала этот метод честно копирует в целевой файл, а потом удаляет исходный файл, походу теряя атомарность операции rename. А с другой стороны, нет метода copyTo(), который надо делать самому. Вот, кто бы объяснил, почему?

"И так у них все" (С)
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37932231
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusА с другой стороны, нет метода copyTo()Если кровь-из-носу надо, чтобы было в rt.jar - Java SE 7 .
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37932313
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, stepplerus!

> Вот, кто бы объяснил, почему?

Авторы Явы были очень плохими архитекторами.
Что можно- поправили, что нет- осталось криво.

Но хорошо то, что есть кому предлагать хорошие идеи и их слушают.
Тем и хороша.

--
Алексей
JID: alxt@ya.ru


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37932362
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusНе, странная эта штука - Java.

С одной строны, есть метод renameTo(), который переименовывает даже между различными устройствами (чего ни одна ОС не делает). То есть, сначала этот метод честно копирует в целевой файл, а потом удаляет исходный файл, походу теряя атомарность операции rename. А с другой стороны, нет метода copyTo(), который надо делать самому. Вот, кто бы объяснил, почему?

"И так у них все" (С)

потому что жаба изначально предполагалась кроссплатформенным средством. Оно может запускаться там где файловой системы вообще нет (банковские карты, телефоны), там где к файлам нет никакого доступа (вебстарт, апплеты), там где с файлами работают совершенно иначе (под досом и виндовс ранними, например, у файлов нет владельца).
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37932380
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот понять бы еще, как со всей этой фигней ява стала промышленным стандартом.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37932388
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot 1024]stepplerusНе, странная эта штука - Java.

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

Кстати, про владельцев.

1. Отбираю (в XP) у себя права на каталог, и File.listFiles() возвращает null, в то время как а я жду Exception. Ладно, оставим так.
2. Отбираю (в XP) у себя права на файл, все становится еще интреснее. Внутри одного устройства файл (неожиданно) переносится благополучно, сохраняя при этом все свои "запретительные" атрибуты. На другое устройство файл уже не переносится (ожидаемо), но при этом так же не происходит Exception, просто метод переноса возвращает false вместо true. Я что-то пропускаю в списке throw? Хотелось бы видеть, что именно происходит, а не просто "не шмогла".

Спасибо.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37932390
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot stepplerus]1024пропущено...


Кстати, про владельцев.

1. Отбираю (в XP) у себя права на каталог, и File.listFiles() возвращает null, в то время как а я жду Exception. Ладно, оставим так.
2. Отбираю (в XP) у себя права на файл, все становится еще интреснее. Внутри одного устройства файл (неожиданно) переносится благополучно, сохраняя при этом все свои "запретительные" атрибуты. На другое устройство файл уже не переносится (ожидаемо), но при этом так же не происходит Exception, просто метод переноса возвращает false вместо true. Я что-то пропускаю в списке throw? Хотелось бы видеть, что именно происходит, а не просто "не шмогла".

Спасибо.

надо взять и прочитать в документации.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37932391
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerus2. Отбираю (в XP) у себя права на файл, все становится еще интреснее. Внутри одного устройства файл (неожиданно) переносится благополучно"Неожиданно" потому, что вы плохо знаете систему прав Windows NT.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37932401
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot 1024]stepplerusпропущено...


надо взять и прочитать в документации.

Я как раз ее и читаю. На www.java.sun.com. Но там как-то очень скупо про все написано.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37932413
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorovstepplerus2. Отбираю (в XP) у себя права на файл, все становится еще интреснее. Внутри одного устройства файл (неожиданно) переносится благополучно"Неожиданно" потому, что вы плохо знаете систему прав Windows NT.

Ну, да.
Я простой человек, поэтому ожидаю, что если я отобрал все права, то не должен мочь ничего. А получается не так.
Перенести файл - можно. А вот открыть его в какой-то программе - уже нет (и скопировать - тоже нет). Почему?

ЗЫ. Это риторические вопросы.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37932425
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot 1024]stepplerusпропущено...


надо взять и прочитать в документации.

Да. И отказаться от класса File из io. Так я понимаю текущую ситуацию. Для игрушек он был написан, а не для работы.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37932436
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot stepplerus]1024пропущено...


Да. И отказаться от класса File из io. Так я понимаю текущую ситуацию. Для игрушек он был написан, а не для работы.

уговаривайте меня!
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37932462
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot 1024]stepplerusпропущено...


уговаривайте меня!

Ага.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37933148
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дверь открыта в обе стороны
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37933458
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusBasil A. Sidorovпропущено...
"Неожиданно" потому, что вы плохо знаете систему прав Windows NT.

Ну, да.
Я простой человек, поэтому ожидаю, что если я отобрал все права, то не должен мочь ничего. А получается не так.
Перенести файл - можно. А вот открыть его в какой-то программе - уже нет (и скопировать - тоже нет). Почему?

ЗЫ. Это риторические вопросы.


Да. И отказаться от класса File из io. Так я понимаю текущую ситуацию. Для игрушек он был написан, а не для работы.


Поздравляю, вы первый кто написал вирус на java.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37933515
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1024дверь открыта в обе стороны

Хамить - это обязательно?
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37933539
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusХамить - это обязательно?А вы никогда не видели дверей в магазинах и тамбурах? Они действительно открываются в обе стороны.
Кроме того, вам, пока, не хамят. А вот ваш апломб - несколько раздражает.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37933552
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerus,

1) В Java 7 есть try-with-resource
http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
Ресурс, конечно, придется создать свой. Но фича как раз создана для того чтобы решить вашу проблему.

2) В Java принятно именовать переменные с маленькой буквы.

3) Обратите внимание что File.delete() возвращает boolean. Хорошим стилем было бы это значение проверить. Т.к. исключения этот метод обычно не выкидывает.

4) В Java 7 так же много чего интересного в работе с файлами
http://docs.oracle.com/javase/tutorial/essential/io/fileio.html
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37934753
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovstepplerusХамить - это обязательно?А вы никогда не видели дверей в магазинах и тамбурах? Они действительно открываются в обе стороны.
Кроме того, вам, пока, не хамят. А вот ваш апломб - несколько раздражает.

Могу себе позволить. Опыт программирования у меня, прямо скажем, не маленький. На самых разных системах. Но не на JAVA.
А то, что я вижу в JAVA, меня, мягко говоря, удивляет.
Как, например, нижеописаная ситуация - "метод delete() возвращает boolean, и исключения редко выкидывает". Как такое может быть вообще? Я не могу удалить файл, и НИКАК не могу узнать - почему?
Так же непонятен двойственный подход - метод и результат возвращает и исключение может выкинуть, а может и не выкинуть. Тогда только результат - истина или ложь.
Если уж писать систему на исключениях, то в ней ВСЕ ошибки должны быть на исключениях, а все методы, которые возвращают не объекты, должны быть void. Если писать систему без исключений, то подобные методы должны возвращать хотя бы int, в котором будет код ошибки (для разных случаев - разный).
При таком подходе прикладной код тоже получается простой и понятный. В одном случае - на исключениях, в другом - на проверках результата вызова функций. Оба этих подхода я вполне успешно использовал и использую до сих пор.
А с JAVA получается, как в том анекдоте - "тут играть, тут не играть, тут рыбу заворачивали, не черкайте, это не ваши ноты". Я не утверждаю, что с этим совсем нельзя жить. Можно, конечно. Мир, вообще, не совершенен. Но сдержать свое удивление по этому поводу я пока не могу. Наверное привыкну, но, со временем, не сразу. Привык же, например, к языку, где перевести буквы в строчные это lc(), а в прописные - caps().
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37934755
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
0FDПоздравляю, вы первый кто написал вирус на java.

Не, FAR так же работает.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37934760
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Спасибо, посмотрю.

Про Path я уже читал, но так и не понял, что это. Видимо, не добрался еще до начала объяснения. Особенно порадовали примеры:

Path source = ...
Path target = ...

Files.copy(source, target, ...);
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37934811
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerus,
ваши доводы на первый взгляд логичны.
Но, реализовать именно Кроссплатформенно API-работу с файлами в кавычках - не так просто.
Как все случаи жизни подвести под один API и ещё вдобавок вывести подробности "не смогла" по каждой?.
Хотя на самом деле, говорят, что кроссплатформенность - это "игрушки" ).
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37934830
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Ну, я, как раз, сейчас сижу на кроссплатформенной системе. В ней, для файловых операций, возвращается код ошибки ОС. Для виндов и юникса они разные, хотя, частью и совпадают. Так как я знаю, на какой ОС произошла ошибка, расшифровать ее труда не составляет (большого). Хотя, для части файловых операций никаких ошибок не возвращается, и даже исключений перехватить нельзя. Так что, да, похоже, что проблемы общие.

Разочаровывает меня JAVA. От системы, которая была написана уже после того, как большинство шишек уже было набито, я ждал большей стройности. А пока это все больше похоже на нагромождение.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37934865
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusРазочаровывает меня JAVA. От системы, которая была написана уже после того, как большинство шишек уже было набито, я ждал большей стройности. А пока это все больше похоже на нагромождение.
а что? Большой выбор альтернатив?
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37934870
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, stepplerus!

> А то, что я вижу в JAVA, меня, мягко говоря, удивляет.

В java некоторые вещи были сделаны изначально плохо.
В частности- работа с файлами.
Поэтому есть NIO в JDK1.4 и NIO2 в JDK7.
Если есть возможность- используй NOI2 и забудь остальное, как страшный сон.

> А с JAVA получается, как в том анекдоте - "тут играть, тут не играть,
> тут рыбу заворачивали, не черкайте, это не ваши ноты". Я не утверждаю,
> что с этим совсем нельзя жить. Можно, конечно. Мир, вообще, не
> совершенен. Но сдержать свое удивление по этому поводу я пока не могу.

Мир несовершенен. Правильно сделанные ЯП оказываются громоздкими и без
поддержки сообщества (Algol68, Ada, Eiifel), используются нишево.
Приходится жить в кривых поделиях, рождённых случайно и без
продумывания, и доделанных общими усилиями до состояния "что смогли, то
поправили, остальное уж как есть" (C, C++, java, php и т.п.).

--
Алексей
JID: alxt@ya.ru


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37934874
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123stepplerusРазочаровывает меня JAVA. От системы, которая была написана уже после того, как большинство шишек уже было набито, я ждал большей стройности. А пока это все больше похоже на нагромождение.
а что? Большой выбор альтернатив?

Ну, как говорят англичане: "из двух зол и выбирать не стоит".

Интересно было бы узнать, что помешало сделать хорошие библиотеки на Cи. В которые положить, в том числе, и кроссплатформенность.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37934905
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_SamaraМир несовершенен.
+1 )))
Добавлю, что иногда даже легче жить, зная что ОН несовершенен))

авторИнтересно было бы узнать, что помешало сделать хорошие библиотеки на Cи.
На Си своих тараканов полно.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37934984
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusМогу себе позволить. Опыт программирования у меня, прямо скажем, не маленький. На самых разных системах.И что? "Да у меня тридцать лет армейского стажа!" (ц) "Две сорванные башни"Но не на JAVA.Ну так и не суйтесь со своим уставом в чужой монастырь.А то, что я вижу в JAVA, меня, мягко говоря, удивляет.
Как, например, нижеописаная ситуация - "метод delete() возвращает boolean, и исключения редко выкидывает". Как такое может быть вообще?Смотрим доку (Java SE 6)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
public boolean delete()
Deletes the file or directory denoted by this abstract pathname.
If this pathname denotes a directory, then the directory must be empty in order to be deleted.
Returns:
 true if and only if the file or directory is successfully deleted; false otherwise 
Throws:
 SecurityException - If a security manager exists and its
 SecurityManager.checkDelete(java.lang.String) method
 denies delete access to the file

Видим, что исключение кидается тогда, когда программа работает под диспетчером безопасности.Я не могу удалить файл, и НИКАК не могу узнать - почему?Да, не можете.
По той простой причине, что никто не собирается создавать стопитцот унифицированных кодов ошибок и отображать их на всевозможные системные.Так же непонятен двойственный подходЭто потому, что вы не взяли труд почитать документацию. И подумать.Если уж писать систему на исключениях, то в ней ВСЕ ошибки должны быть на исключениях, а все методы, которые возвращают не объекты, должны быть void.А вот это - бред. Исключение - исключительная ситуация. А исключительным является только то, что не может быть решено в данном контектсе . Не больше и не меньше.При таком подходе прикладной код тоже получается простой и понятный.Прикладной код не может быть проще задачи. Всё, что может сделать программист - сосредоточить сложные вещи внутри "простых". Но даже такой подход работает, пока вам не требуется отладка. Потребовалась - придётся нырять в потроха.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935035
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovПо той простой причине, что никто не собирается создавать стопитцот унифицированных кодов ошибок и отображать их на всевозможные системные.
я с тобой согласен.
Но _в прикладном_ коде нужно знать о причине "не могу". Т.к. нужно принимать решение.
Но, и с тем, что для всех осей писать коды ошибок - тоже некузяво.
Согласен.
ЗЫ. Как сказали на форуме Игрушек программисты: "кроссплатформенность, это обман".
Всё равно в коде сложной системы - куча if \ else и т.д.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935057
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

1. JAVA - не монастырь, JAVA - инструмент. Нельзя предъявлять претензии к инструменту? С каких это пор?
2. Я покручу SecurityManager.
3. В операционных системах дают себе труд создать и описать стопитсот ошибок. Не вижу никаких причин не сделать это в JAVA. Кроме как "нам это сдавать ко второму явнваря, а еще код не весь проверен".
4. Есть разные исключения. В том числе - проверяемые. Код, основанный на одном подходе - проще и понятнее. Например, в каком-то другом случае, я буду думать, что получу ошибку в виде возвращаемого результата метода, а у меня случится исключение, которое я не предусмотрел. Понятно, что прочитав доку и проведя стопитсот тестов, я решу эту проблему. Но нафига такой гемморой? Что бы не скучно было? Почему не сделать все одинаково?
5. Не должен я "нырять в потроха". Вынужден, да. Но не должен.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935066
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Но _в прикладном_ коде нужно знать о причине "не могу". Т.к. нужно принимать решение.Одно с другим не связано. Вообще.
Несколько примеров:
1. Винда не позволяет удалить файл, открытый другим процессом. Ошибка - нет доступа. Ровно такая же, как и при "реальной" нехватке прав. Ошибка одна, а решения - разные. А в хрюниксах эта ошибка вообще не возникает.
2. В хрюниксах файловые системы - регистрочувствительные, а виндах - регистро не чувствительные. Но - сохраняющие регистр. Тоже может быть источником проблем.
3. Есть, например, XADisk - там добавляются свои ошибки, о которых рантайм в принципе не может знать.

Те, кому действительно могут взять Java SE 7 и реализовать такое файловое хранилище, которое их душе угодно.

P.S. Задача прикладного программиста - реализовать (свою часть) проект(а) в рамках существующего бюджета и ограничений.
А не хныкаться, что стиль кода функции не той системы.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935086
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovА не хныкаться, что стиль кода функции не той системы.

Сначала есть момент выбора - на чем реализовывать.
Мне, например, говорят, "Ваша бла-бла-бла - не промышленная система, а вот JAVA - промышленная, поэтому все надо делать на JAVA".
Можете считать, что я узнаю степень ее "промышленности".
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935089
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerus1. JAVA - не монастырь, JAVA - инструмент. Нельзя предъявлять претензии к инструменту? С каких это пор?"Знай, что хаешь" (ц) dz. Сказано было про OS/2, но актуально до сих пор.2. Я покручу SecurityManager."В некоторых случаях не помогает и чтение газет".
Диспетчер безопасности - совершенно отдельная категория исключений. Прикладная, а не системная.3. В операционных системах дают себе труд создать и описать стопитсот ошибок. Не вижу никаких причин не сделать это в JAVA. Кроме как "нам это сдавать ко второму явнваря, а еще код не весь проверен".Покажите мне этих титанов. Которые свели воедино список ошибок винды, полуоси, солярок, фрей и разномастных линуксов. На железках от сотовых до персоналок.
Родина должна знать своих героев.
Миникомпьютеры, мэйнфрэймы и их операционки, так и быть, добавлять не станем.Почему не сделать все одинаково?"Делай настолько просто, насколько это возможно, но не проще".5. Не должен я "нырять в потроха". Вынужден, да. Но не должен.Ну тогда - спасибо, я уже насмотрелся на результаты такого профессионализма.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935095
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusСначала есть момент выбора - на чем реализовывать.Это задача архитектора проекта.
В нормальной ситуации учитывают, что короткий путь - известный путь.Можете считать, что я узнаю степень ее "промышленности".Пока демонстрируете, что "узкий специалист подобен флюсу, ибо полнота его односторонняя".
Не надо начинать ответственный проект "на чужом поле".
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935104
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

И где та оспополам?
А DZ (если это тот, кого я знал), тот еще охальник.
Я почитаю про SecurityManager подробно.
Не надо сводить вместе ошибки разных операционных систем. Достаточно вернуть то, что возвращает операционная система. Я, лично, ни в DOS, ни в UNIX (разных), ни в WINDOWS, ни в Novell не имел проблем с получением кода ошибки от файловой системы. Ни на одном средстве разработки. Пока с JAVA не познакомился.
Вот майнфреймах я только математическими вычислениями занимался, ничего не могу сказать про их файловые системы.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935113
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

Гм. Почему не предполжить, что я и есть архитектор?
А поле, дело такое, не всегда его можно взять с собой. И на каждом растет все, что нужно.

"Промышленность" - это, в том числе, и беспроблемность.
Типа, "сел и поехал". Без доработки напильником.
А если нужен напильник, то это уже, скорее, "на коленке сделанная".
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935147
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusИ где та оспополам?Где бы она ни была - JRE/JDK для неё существуют. До 1.3.1 - IBM, 1.4 - GoldenCode, далее - "одинизация".А DZ (если это тот, кого я знал), тот еще охальник.Возможно, но мысль его - абсолютно здравая, а формулировка - чёткая.Я почитаю про SecurityManager подробно.Вот задлянафига? Апплет пишите? Или заказчик потребовал, чтобы приложение было "поражено в правах"?Не надо сводить вместе ошибки разных операционных систем. Достаточно вернуть то, что возвращает операционная система.Мопвашуять ...
Вот работает у нас две системы одного разработчика. Одна под виндой, другая под линуксом. Ту, которая работает под виндой можно взять и запустить под линуксом. Единственное изменение - стартовые скрипты.
А с вашим подходом ещё и коды ошибок станут другие. Внезапно.
Нафига такое счастье, особенно с учётом того, что на момент возникновения ошибки никто и ничего оперативно исправить не может. Ни приложение, ни даже администратор. Я, лично, ни в DOS, ни в UNIX (разных), ни в WINDOWS, ни в Novell не имел проблем с получением кода ошибки от файловой системы. Ни на одном средстве разработки."Проблема не в том, что человек смертен, а в том, что иногда он внезапно смертен".Пока с JAVA не познакомился.Это и в ява не проблема. Но возврат boolean вместо int - это фича, а не бага. Вполне разумное решение.Вот майнфреймах я только математическими вычислениями занимался, ничего не могу сказать про их файловые системы.Там и файловых систем может не быть. Зато может быть эмуляция ленты или диска. Или скажем "родная" файловая система OS/400 - отличается от posix-like. Хотя и умеет их эмулировать.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935155
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerus"Промышленность" - это, в том числе, и беспроблемность.Это иллюзия.Типа, "сел и поехал". Без доработки напильником.А это - мракетинг. Тоже иллюзия, но хуже.А если нужен напильник, то это уже, скорее, "на коленке сделанная".Напильник нужен всегда. Важно (без нужды) не точить то, что уже выпилено.
Программирование, в этом отношении, уникально - только здесь можно изготовить переходник с болта М9 на гайку М6.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935204
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эх, а хорошо бы что нибудь такого промышленного))
Код: java
1.
  if nIOResult = 2 {ошибка винды} then  ЧЧЧЧЧЧЧЧ + 'файл не найден.'



Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
procedure ioResultMessage(nIOResult : Integer; FileName : string; Applic : TApplication);
var
t : string;
begin
  if nIOResult = 0 then exit;
  t := 'Ошибка работы с файлом: ' + FileName + ', ';
  if nIOResult = 2 then
     MessageBox(application.handle,Pchar(t + 'файл не найден.'),  Pchar(Applic.exename),MB_ICONSTOP)
  else  if nIOResult = 3 then
     MessageBox(application.handle,Pchar(t + 'ошибочное имя файла.'), Pchar(Applic.exename),MB_ICONSTOP)
  else  if nIOResult = 4 then
     MessageBox(application.handle,Pchar(t + 'слишком много открытых файлов.'), Pchar(Applic.exename),MB_ICONSTOP)
  else  if nIOResult = 5 then
     MessageBox(application.handle,Pchar(t + 'нет доступа.'), Pchar(Applic.exename),MB_ICONSTOP)
  else  if nIOResult = 100 then
     MessageBox(application.handle,Pchar(t + 'достигнут конец файла.'), Pchar(Applic.exename),MB_ICONSTOP)
  else  if nIOResult = 101 then
     MessageBox(application.handle,Pchar(t + 'нет свободного места на диске.'), Pchar(Applic.exename),MB_ICONSTOP)
  else  if nIOResult = 104 then
     MessageBox(application.handle,Pchar(t + 'не найден файл, запрет на доступ данному пользователю.'), Pchar(Applic.exename),MB_ICONSTOP)
  else  if nIOResult = 106 then
     MessageBox(application.handle,Pchar(t + 'ошибка ввода в файл.'), Pchar(Applic.exename),MB_ICONSTOP)
  else
     MessageBox(application.handle,Pchar(t + 'другой тип ошибки. (' + IntToStr(ioResult)+')'), Pchar(Applic.exename),MB_ICONSTOP);
end;

...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935218
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123эх, а хорошо бы что нибудь такого промышленного))
Код: java
1.
  if nIOResult = 2 {ошибка винды} then  ЧЧЧЧЧЧЧЧ + 'файл не найден.'

Стек-трейсы рабочей системы давно смотрели?
Работает, что характерно, без участия программиста.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935224
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovМопвашуять ...
Вот работает у нас две системы одного разработчика. Одна под виндой, другая под линуксом. Ту, которая работает под виндой можно взять и запустить под линуксом. Единственное изменение - стартовые скрипты.
А с вашим подходом ещё и коды ошибок станут другие. Внезапно.
Нафига такое счастье, особенно с учётом того, что на момент возникновения ошибки никто и ничего оперативно исправить не может. Ни приложение, ни даже администратор.
Это будет уже моей проблемой, правда? И как ее решать я знаю, уж поверьте.
Кстати, в исключениях цифр обычно нету, все больше слова. И что будет написано "no accesss" или "access denied", по большому счету без разницы. Так как, скорее всего, прямо сейчас, проблему, действительно, никто решать не будет. Потом, в логи глянут, и примут какое-нибудь решение, на основе слов, которые там написано. Не знаю, что можно будет сделать, увидев в логе "false". Может, Вы знаете? Подскажите?

А SecurityManager я, все-таки почитаю, уж, извините.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935227
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
прикладной прикладному - рознь.
У той, что выше, прикладной код и его ошибку надо дать СРАЗУ пользователю или девочке рядом из техподдержки.
А файл на шаре заблокирован с другой проги на соседнем этаже.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935245
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorovstepplerus"Промышленность" - это, в том числе, и беспроблемность.Это иллюзия.Типа, "сел и поехал". Без доработки напильником.А это - мракетинг. Тоже иллюзия, но хуже.А если нужен напильник, то это уже, скорее, "на коленке сделанная".Напильник нужен всегда. Важно (без нужды) не точить то, что уже выпилено.
Программирование, в этом отношении, уникально - только здесь можно изготовить переходник с болта М9 на гайку М6.
Ну, не знаю.
Вот у меня тойота была три года. Все что делал - заливал бензин и жидкость в бачок омывателя. На ТО ездил. Со мной что-то не так? Надо было на яму ее закатывать, отвинчивать - привинчивать что-нибудь?
Или телевизор, например. Купил, воткнул проводка, нажал "автонастройка". Смотри и радуйся. Или стиральная машина. Или холодильник.
Скажете, что они проще? Нет, нифига не проще. Просто они промышленно сделаны, а не на коленке. Вот и вся разница.

А переходники и из железа есть. Сходите на рынок, убедитесь сами.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935247
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusЭто будет уже моей проблемой, правда?Нет.
Я вспомнил про стек-трейсы рабочей системы. System-specific ошибки там есть.

P.S. А проблему будет решать системный администратор :)
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935268
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
вот и выходит, что есть СЕРВЕРНАЯ система, где ошибки на уровне оси заранее исключаются (выводятся в логи).
Java как раз для таких))
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935270
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123У той, что выше, прикладной код и его ошибку надо дать СРАЗУ пользователю или девочке рядом из техподдержки.
А файл на шаре заблокирован с другой проги на соседнем этаже.Зная уровень техподдержки, могу обоснованно утверждать, что "не могу удалить файл" и "Отказано в доступе" для них совершенно эквивалентны.
Поэтому в данном конкретном случае (удаление файла) возврат true/false - вполне обоснован.
Если возникнет ошибка ввода/вывода, будет выброшено java.io.IOException и там, среди прочего, будет и "нативная причина".

P.S. Если кто-то думает, что типичная техподдержка умеет/хочет читать стек-трейсы - он сильно ошибается.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935285
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вот и выходит, что есть СЕРВЕРНАЯ система, где ошибки на уровне оси заранее исключаются (выводятся в логи)."Шматрица":
Код: sql
1.
2.
- Только чтобы эта ... без извращений.
- Как закажете.


"Наш" клиент - выдаёт исключение пользователю. А сервер приложений - пишет в лог.
Так-шта-а - как закажете.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935346
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЕсли возникнет ошибка ввода/вывода, будет выброшено java.io.IOException и там, среди прочего, будет и "нативная причина".File.delete() не бросает IOException.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935394
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovstepplerusЭто будет уже моей проблемой, правда?Нет.
Я вспомнил про стек-трейсы рабочей системы. System-specific ошибки там есть.

P.S. А проблему будет решать системный администратор :)

Есть еще какие-то стек-трейсы, кроме Exception exc.prrintStackTrace()?
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935603
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svenomFile.delete() не бросает IOException.Я в курсе.
Можно спорить насколько "архитектурно правильно" размещать delete в jav.io.File, но я бы хотел увидеть код, который может исправить ошибку удаления файла, располагая кодом системной ошибки.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935614
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusА переходники и из железа есть.С болта М9 на гайку М6? А ведь исходный пример - гораздо гораздее.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935632
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovsvenomFile.delete() не бросает IOException.Я в курсе.
Можно спорить насколько "архитектурно правильно" размещать delete в jav.io.File, но я бы хотел увидеть код, который может исправить ошибку удаления файла, располагая кодом системной ошибки.Ну а что вы можете исправить? Есть ограниченное количество "исправимых" ошибок - "директория не пуста", "файл не существует". Тут можно придумать какой-нибудь workaround. Ну плюс, если прав не хватает - можно попробовать из Java выставить себе write-привилегию. Итого - 3 потенциально иcправимые ситуации, все соответствующие методы уже есть в java.io.File. Нафига нам нужен зоопарк платформозависимых кодов (количество которых исчисляется десятками) - непонятно.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935642
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svenomНафига нам нужен зоопарк платформозависимых кодов (количество которых исчисляется десятками) - непонятно.Ну, некоторые - хотят. Более того, считают свою хотелку не просто оправданной, но и трювэй.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935663
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovsvenomНафига нам нужен зоопарк платформозависимых кодов (количество которых исчисляется десятками) - непонятно.Ну, некоторые - хотят. Более того, считают свою хотелку не просто оправданной, но и трювэй.Ну в этом то и вопрос - зачем они это хотят? Смысл Java в том то и заключается, что бы абстрагироваться от платформы. Какая этим упертым трювей-программистам разница, запишут ли они:
Код: java
1.
2.
3.
4.
5.
if (error_code == 1) {
    ...
} else if (error_code == 2) {
   ...
}

или
Код: java
1.
2.
3.
4.
5.
6.
if (file.isEmpty()) {
    ....
}
if (file.canWrite()) {
    ....
}

Да никакой. Это заморочки-из-бочки на пустом месте.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935666
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
платформозависимость внутри, а снаружи выдать максимум информации.
Например, Canvas \ HDC скрывает всё внутри.
А если внизу внутри разных 2-оси, то извольте максимум инфы по ним. А не среднее по госпитплю - НЕ ВЫШЛО )))
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935671
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svenomЭто заморочки-из-бочки на пустом месте.Ну вот человек привык анализировать код и на основании анализа - принимать решения.
Анализировать ситуацию и принимать решения - он пока(?) не додумался.
Но Пастернака уже осуждает.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935673
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svenomДа никакой. Это заморочки-из-бочки на пустом месте.
революция? Код ошибки не нужен - заменим HTTP_ERROR 400 на имя функции?
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935676
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вы развели демагогию
http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#delete%28java.nio.file.Path%29 Throws:
NoSuchFileException - if the file does not exist (optional specific exception)
DirectoryNotEmptyException - if the file is a directory and could not otherwise be deleted because the directory is not empty (optional specific exception)
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, the SecurityManager.checkDelete(String) method is invoked to check delete access to the file

вот исключения которых так хотел stepplerus, даже IOException на случай других ошибок из операционки.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935678
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123А если внизу внутри разных 2-оси, то извольте максимум инфы по ним. А не среднее по госпитплю - НЕ ВЫШЛО )))Вот только не надо с delete() на Graphics перепрыгивать.
Плюс, насколько я понимаю, из Graphics можно получить Graphics2D и проанализировать много чего.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935680
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

пришёл лесник и всех разогнал ))
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935683
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczвот исключения которых так хотел stepplerus, даже IOException на случай других ошибок из операционки.Ну так в семерке библиотека ввода-вывода существенно перепахана. Даже open() появился :)
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935707
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovstepplerusА переходники и из железа есть.С болта М9 на гайку М6? А ведь исходный пример - гораздо гораздее.

Я, как инженер механик, не могу придумать, зачем нужен такой переходник. Оторвет ведь, гайку-то с такого болта.
А вот двойные болты видел, где к более прочной части что-то тяжелое прикручивают, а к более тонкой - что-нибудь полегче.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935762
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovsvenomFile.delete() не бросает IOException.Я в курсе.
Можно спорить насколько "архитектурно правильно" размещать delete в jav.io.File, но я бы хотел увидеть код, который может исправить ошибку удаления файла, располагая кодом системной ошибки.

Странные вы ребята, пытаетесь убедить неизвестно кого неизвестно в чем.

Например, для delete(), в случае ошибки "файл не найден" я решу, что и так хорошо. А при других ошибках остановлю обработку, пока диск не переполнился. Другое дело, что "файл не найден" может быть и из-за того, что устройство отвалилось, но, в этом случае следующий create() не выполнится. Тоже, кстати, интересно, что он расскажет о невозможности своего выполнения...

Речь же не только о несчастном delete(). Файловых операций много.
Например, посмотрим на FileReaded. Он, по идее, должен создать исключение, если указанного файла не существует, правильно?
Теперь вопрос - этот класс/метод чем-то принципиально отличается от File.delete()? Чем?
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935770
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svenomBasil A. Sidorovпропущено...
Ну, некоторые - хотят. Более того, считают свою хотелку не просто оправданной, но и трювэй.Ну в этом то и вопрос - зачем они это хотят? Смысл Java в том то и заключается, что бы абстрагироваться от платформы. Какая этим упертым трювей-программистам разница, запишут ли они:
Код: java
1.
2.
3.
4.
5.
if (error_code == 1) {
    ...
} else if (error_code == 2) {
   ...
}

или
Код: java
1.
2.
3.
4.
5.
6.
if (file.isEmpty()) {
    ....
}
if (file.canWrite()) {
    ....
}

Да никакой. Это заморочки-из-бочки на пустом месте.
Смишно. И Вы уверены, что между canWrite() и write() ничего никогда не успеет произойти?
Таки у меня для Вас плохие новости.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935772
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusНапример, для delete(), в случае ошибки "файл не найден" я решу, что и так хорошо. А при других ошибках остановлю обработку, пока диск не переполнился. Другое дело, что "файл не найден" может быть и из-за того, что устройство отвалилось, но, в этом случае следующий create() не выполнится. Тоже, кстати, интересно, что он расскажет о невозможности своего выполнения...Могу только повторить - "Знай, что хаешь".
А пока - просто: "Забудь всё, чему тебя учили в институте".
И читайте доки - они рулез.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935775
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusЯ, как инженер механикТ.е. сарказм ситуации до вас по прежнему не доходит?
Плохо вам.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935777
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusBasil A. Sidorovпропущено...
Я в курсе.
Можно спорить насколько "архитектурно правильно" размещать delete в jav.io.File, но я бы хотел увидеть код, который может исправить ошибку удаления файла, располагая кодом системной ошибки.

Странные вы ребята, пытаетесь убедить неизвестно кого неизвестно в чем.

Например, для delete(), в случае ошибки "файл не найден" я решу, что и так хорошо. А при других ошибках остановлю обработку, пока диск не переполнился. Другое дело, что "файл не найден" может быть и из-за того, что устройство отвалилось, но, в этом случае следующий create() не выполнится. Тоже, кстати, интересно, что он расскажет о невозможности своего выполнения...


ну вот видишь, уже просто узнать что "файл не найден" нельзя.

Тебе русским языком говорят - ты не удаляешь файл. Ты вызываешь команду удаления файла. Но т.к. для разных фс команды разные то и ошибки разные.

Если тебе нужна платформозависимый способ то File.delete() к нему не относится. Эта функция кроссплатформенная а значит в чём-то урезанная.

Проще паренной репы.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935780
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusСмишно. И Вы уверены, что между canWrite() и write() ничего никогда не успеет произойти?
Таки у меня для Вас плохие новости.У меня для вас новости еще хуже - при вашем подходе у нас имеет место быть точно такая же проблема, ибо от момента получения ошибки OS до момент ее обработки с файлом точно так же может произойти все, что угодно.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935783
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovstepplerusНапример, для delete(), в случае ошибки "файл не найден" я решу, что и так хорошо. А при других ошибках остановлю обработку, пока диск не переполнился. Другое дело, что "файл не найден" может быть и из-за того, что устройство отвалилось, но, в этом случае следующий create() не выполнится. Тоже, кстати, интересно, что он расскажет о невозможности своего выполнения...Могу только повторить - "Знай, что хаешь".
А пока - просто: "Забудь всё, чему тебя учили в институте".
И читайте доки - они рулез.

Ответ по сравнению delete() и FileWritter не будет, да?

Тем более, что в SE7 все сделано именно так, как я и хочу (как тут пишут). Надо будет поставить и посмотреть.

И, таки, что теперь? Опять будете выступать адвокатом дьявола?
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935784
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusСмишно. И Вы уверены, что между canWrite() и write() ничего никогда не успеет произойти?
Таки у меня для Вас плохие новости.Не надо быть таким упёртым и самоуверенным.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935786
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Blazkowicz,

пришёл лесник и всех разогнал ))

То есть, я в SE7 буду практически счастлив?
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935795
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusОтвет по сравнению delete() и FileWritter не будет, да?Цитирование штатной документации - за отдельную плату.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935797
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svenomstepplerusСмишно. И Вы уверены, что между canWrite() и write() ничего никогда не успеет произойти?
Таки у меня для Вас плохие новости.У меня для вас новости еще хуже - при вашем подходе у нас имеет место быть точно такая же проблема, ибо от момента получения ошибки OS до момент ее обработки с файлом точно так же может произойти все, что угодно.

При каком "моем"? Уточните, пожалуйста.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935799
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovstepplerusОтвет по сравнению delete() и FileWritter не будет, да?Цитирование штатной документации - за отдельную плату.

То есть - не будет. Ок.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935806
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusBasil A. Sidorovпропущено...
Цитирование штатной документации - за отдельную плату.

То есть - не будет. Ок.

уговаривайте меня!

тебе ж сказали: чтение документации вслух - 3т.р. за час.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935808
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovstepplerusЯ, как инженер механикТ.е. сарказм ситуации до вас по прежнему не доходит?
Плохо вам.

Мне - хорошо. В последней редакции сделано именно так, как я считаю правильным. Чего же мне должно быть плохо?
А железный переходник делается ничуть не сложнее, а то и проще, чем программный. В чем сарказм-то?
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935813
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusТо есть - не будет .
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935815
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerussvenomпропущено...
У меня для вас новости еще хуже - при вашем подходе у нас имеет место быть точно такая же проблема, ибо от момента получения ошибки OS до момент ее обработки с файлом точно так же может произойти все, что угодно.
При каком "моем"? Уточните, пожалуйста.При гипотетической передаче в JVM кода ошибки OS или при инициации исключения. При любом из этих трех вариантов, в момент обработки ошибки вам никто не даст гарантии, что со времени возникновения ошибки и до момента ее обработки с файлом ничего не произошло.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935818
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovstepplerusСмишно. И Вы уверены, что между canWrite() и write() ничего никогда не успеет произойти?
Таки у меня для Вас плохие новости.Не надо быть таким упёртым и самоуверенным.

Это не самоуверенность, это - опыт.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935820
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusА железный переходник делается ничуть не сложнее, а то и проще, чем программный.С болта М9 на гайку М6???В чем сарказм-то?В мелочах.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935831
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusЭто не самоуверенность, это - опыт.Я, конечно, мэнфреймы не застал, но уровень своей квалификации знаю хорошо.
И, в отличие от вас, прекрасно знаю границы пременимости своих знаний.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935832
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svenomstepplerusСмишно. И Вы уверены, что между canWrite() и write() ничего никогда не успеет произойти?
Таки у меня для Вас плохие новости.У меня для вас новости еще хуже - при вашем подходе у нас имеет место быть точно такая же проблема, ибо от момента получения ошибки OS до момент ее обработки с файлом точно так же может произойти все, что угодно.

То есть, вот авторы новой редакции совсем лохи, да?

public static void delete(Path path)
throws IOException

Чорт, даже void, даже не boolean.

"Я знал, я знал" (С)

Идите уже, почитайте нормальные книги, как правильно программы писать.
Учителя, е-мое.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935842
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusИдите уже, почитайте нормальные книги, как правильно программы писать.Т.е. вы по прежнему не осознаёте, что сравниваете две разные модели?
И даже то, что это два разных класса двух разных пакетов - вас совершенно не останавливает?
А книжки, да, надо почитать. Вам.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935845
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovstepplerusТо есть - не будет .

Ну и к чему были все предыдущие выкрутасы? Чего бы сразу не сказать, что с определенной версии все сделано нормально?
При том, что часть форумчан именно это сразу и сказало?
О чем спор-то был?
О том, что если это JAVA, то в ней все всегда хорошо и замечательно что-ли? Или о чем?
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935855
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. В java отошли от канонов системного программирования на языке Си, когда каждый метод, делающий сайд эффект, должен возращать integer. Точка.
Что еще можно обсуждать? Это данность.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935857
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovstepplerusА железный переходник делается ничуть не сложнее, а то и проще, чем программный.С болта М9 на гайку М6???В чем сарказм-то?В мелочах.

Гм. Два прохода по цлиндрической заготовке. С одной стороны отверстие и метчик на М9, с другой - плашка на М6.
Или еще проще - стачиваем на болте три лишних миллиметра и плашка на М6.

картинка про троллейбус из буханки.jpg
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935858
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusНу и к чему были все предыдущие выкрутасы?Т.е. вы даже не удосужились посмотреть какую именно ссылку я вам предоставил???Чего бы сразу не сказать, что с определенной версии все сделано нормально?С определённой версии "всё" сделано по другому. Вам может быть и нормально, а кому-то - без разницы.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935866
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusГм. Два прохода по цлиндрической заготовке. С одной стороны отверстие и метчик на М9, с другой - плашка на М6.
Или еще проще - стачиваем на болте три лишних миллиметра и плашка на М6.До вас по-прежнему не доходит, что программирование - единственная отрасль, где можно изготовить такой переходник не перетачивая ни болт, ни гайку.
Такая возможность сама по себе - ни хорошо ни плохо. Плохо считать, что (не)использование такой возможности - единственно верное решение.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935882
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerussvenomпропущено...
У меня для вас новости еще хуже - при вашем подходе у нас имеет место быть точно такая же проблема, ибо от момента получения ошибки OS до момент ее обработки с файлом точно так же может произойти все, что угодно.

То есть, вот авторы новой редакции совсем лохи, да?

public static void delete(Path path)
throws IOException

Чорт, даже void, даже не boolean.

"Я знал, я знал" (С)

Идите уже, почитайте нормальные книги, как правильно программы писать.
Учителя, е-мое.Почему же лохи? Просто описанная вами проблема - когда от момента возникновения ошибки до ее обработки что-то может изменить состояние файла - не решаема в рамках JVM, хоть вы boolean возвращайте, хоть код ошибки ОС, хоть бросайте эксепшн.
Поэтому с точки зрения прикладного программиста проблема обработки ошибок работы с файлом принципиально будет решаться одинаково хоть в JVM6, хоть в JVM7.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935888
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svenomstepplerusпропущено...

При каком "моем"? Уточните, пожалуйста.При гипотетической передаче в JVM кода ошибки OS или при инициации исключения. При любом из этих трех вариантов, в момент обработки ошибки вам никто не даст гарантии, что со времени возникновения ошибки и до момента ее обработки с файлом ничего не произошло.

Ну, коллизия ложного несрабатывания мне известна. Когда все хорошо, но сигнал об этом до получателя дойти не успевает. В долгих интеграционных потоках это, обычно, обрабатывается.

А у нас файл благополучно удалился, и что? Тут операционная система отваливается и не успевает ничего рассказать об этом JVM? И JVM считает что произошла ошибка? Так она действительно произошла. И это приведет лишь к тому, что обработка остановится на шаг раньше, чем если бы авария произошла после передачи сигнала об успешном выполнении, так как после аварии на ОС(устройстве) ничего с ним сделать не получится. Или устройство тут же починится? Так для этого таймауты придуманы.

Ну а файл удалится, да. А я буду думать, что нет. Так и есть. И что?
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935905
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovstepplerusИдите уже, почитайте нормальные книги, как правильно программы писать.Т.е. вы по прежнему не осознаёте, что сравниваете две разные модели?
И даже то, что это два разных класса двух разных пакетов - вас совершенно не останавливает?
А книжки, да, надо почитать. Вам.

В той редакции, которая сейчас стоит у меня - nio.Files нет вообще.
Поэтому, правильный вывод: использовать File для тех целей, для которых я собирался его использовать - нельзя.

Собственно, это и был правильный ответ на мой вопрос. И его я получил в самом начале от квалифицировнных специалистов.
В чем вы пытались меня убедить - совершенно непонятно.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935907
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovstepplerusГм. Два прохода по цлиндрической заготовке. С одной стороны отверстие и метчик на М9, с другой - плашка на М6.
Или еще проще - стачиваем на болте три лишних миллиметра и плашка на М6.До вас по-прежнему не доходит, что программирование - единственная отрасль, где можно изготовить такой переходник не перетачивая ни болт, ни гайку.
Такая возможность сама по себе - ни хорошо ни плохо. Плохо считать, что (не)использование такой возможности - единственно верное решение.

Первый вариант и был "не болт ни гайку", а переходник. Третью деталь.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935934
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svenomstepplerusпропущено...


То есть, вот авторы новой редакции совсем лохи, да?

public static void delete(Path path)
throws IOException

Чорт, даже void, даже не boolean.

"Я знал, я знал" (С)

Идите уже, почитайте нормальные книги, как правильно программы писать.
Учителя, е-мое.Почему же лохи? Просто описанная вами проблема - когда от момента возникновения ошибки до ее обработки что-то может изменить состояние файла - не решаема в рамках JVM, хоть вы boolean возвращайте, хоть код ошибки ОС, хоть бросайте эксепшн.
Поэтому с точки зрения прикладного программиста проблема обработки ошибок работы с файлом принципиально будет решаться одинаково хоть в JVM6, хоть в JVM7.

Ну, у методов либо есть атомарность, либо нет.
И да, устройство может отвалиться после того, как я открою файл. А в юниксах его могут еще и удалить пока я его читаю. Но в этих случаях я расчитываю получить именно ту ошибку, которая произошла и именно при той операции, которую я делаю.

А не так, что я проверил, что файл есть, открываю его, а его нет. А ошибку уже не обрабатываю. Зачем? Я же уже проверил, что файл есть. Что за ерунда?
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935945
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusВ той редакции, которая сейчас стоит у меня - nio.Files нет вообще.Даже если предположить, что вы не устанавливали документацию локально (я не устанавливаю), то на пророчьем-то сайте вас, надеюсь, не забанили?
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935956
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusА не так, что я проверил, что файл есть, открываю его, а его нет. А ошибку уже не обрабатываю. Зачем? Я же уже проверил, что файл есть. Что за ерунда?Вас опять подводит нечтение документации.
Во всех версиях эта ошибка обрабатывается одинаково - jvm кидает исключение. А уж вы решаете как именно его обрабатывать и обрабатывать ли вообще.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37935972
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerussvenomпропущено...
Почему же лохи? Просто описанная вами проблема - когда от момента возникновения ошибки до ее обработки что-то может изменить состояние файла - не решаема в рамках JVM, хоть вы boolean возвращайте, хоть код ошибки ОС, хоть бросайте эксепшн.
Поэтому с точки зрения прикладного программиста проблема обработки ошибок работы с файлом принципиально будет решаться одинаково хоть в JVM6, хоть в JVM7.

Ну, у методов либо есть атомарность, либо нет.
И да, устройство может отвалиться после того, как я открою файл. А в юниксах его могут еще и удалить пока я его читаю. Но в этих случаях я расчитываю получить именно ту ошибку, которая произошла и именно при той операции, которую я делаю.

А не так, что я проверил, что файл есть, открываю его, а его нет. А ошибку уже не обрабатываю. Зачем? Я же уже проверил, что файл есть. Что за ерунда?Речь шла не про предварительные проверки перед совершением операции, а про определение источника ошибки после ее возникновения - 13083383 . То есть в старой редакции (до 7), когда возникает ошибка, мы не знаем, чем она была вызвана. Для этого мы, если нам это требуется, производим определенные проверки - есть ли файл на месте, есть ли у нас права, и т.д.. По итогам этих проверок мы решаем, что делать дальше. В JVM7 мы уже получаем вменяемое описание ошибки.
Так вот, смысл заключается в том, что с точки зрения обработки исключительной ситуации у нас может возникнуть race condition как в первом случае, так и во втором. Когда, например, мы поняли, что папка не удалилась, так как они не пустая, мы начинаем ее очищать, но кто-то другой уже сделал это - то есть мы впустую потратили время. Поэтому с точки зрения простоты использования, редакция JVM7, разумеется, выглядит более привлекательно, спору нет. Но с точки зрения семантики обработки исключений принципиально не меняется абсолютно ничего, ибо ни первый, ни второй подход не дают нам гарантий того, что имеющиеся у нас сведения о произошедшей ошибки не устарели к тому моменту, когда мы приступаем к ее обработке.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37936045
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovstepplerusА не так, что я проверил, что файл есть, открываю его, а его нет. А ошибку уже не обрабатываю. Зачем? Я же уже проверил, что файл есть. Что за ерунда?Вас опять подводит нечтение документации.
Во всех версиях эта ошибка обрабатывается одинаково - jvm кидает исключение. А уж вы решаете как именно его обрабатывать и обрабатывать ли вообще.
Дык. Эта. Проблема то как раз в том, что у File.delete() нет исключений (в SE5).

То о чем вы со swenom толкуете тоже понятно.
Так приходится делать, когда вызываешь внешнюю программу, которая вообще ничего не возвращает например.
Если она создает, скажем, файл, то, после ее вызова, приходится в явном виде проверять, что такой файл действительно появился.
Или, что количество файлов после совпадает с количеством файлов до. Или еще какую-нибудь подобную фигню.

Но внутри одной системы хотелось бы этого избегать всеми возможными силами. Теперь я знаю способ, как этого добиться.
Можно сказать, что цель данного обсужения успешно достигнута.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37936057
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovstepplerusВ той редакции, которая сейчас стоит у меня - nio.Files нет вообще.Даже если предположить, что вы не устанавливали документацию локально (я не устанавливаю), то на пророчьем-то сайте вас, надеюсь, не забанили?

А могут?

А по сути дела:

import static java.nio.file.* дает фигвам
import static java.nio.file.StandardCopyOption.*; дает аналогичный фигвам

Логично предположить, что у меня этих пакетов просто нет.
А раз нет у меня, то и в других местах они без специальных пинков не появятся.
Зато теперь есть основания для пинков.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37936067
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovstepplerusА не так, что я проверил, что файл есть, открываю его, а его нет. А ошибку уже не обрабатываю. Зачем? Я же уже проверил, что файл есть. Что за ерунда?Вас опять подводит нечтение документации.
Во всех версиях эта ошибка обрабатывается одинаково - jvm кидает исключение. А уж вы решаете как именно его обрабатывать и обрабатывать ли вообще.

Да больной какой-то. "Я хочу чтоб было так как я хочу" - ну сделай так как хочешь. Но работать будет так как написано в документации.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37936084
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusМожно сказать, что цель данного обсужения успешно достигнута.
считаю страниц в топике пока не достаточно, так что рано расслаблять булки
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37936086
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chpashastepplerusМожно сказать, что цель данного обсужения успешно достигнута.
считаю страниц в топике пока не достаточно, так что рано расслаблять булки

Да без проблем, продолжайте. Форум, слава богам, пока общий.
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37936090
stepplerus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1024Basil A. Sidorovпропущено...
Вас опять подводит нечтение документации.
Во всех версиях эта ошибка обрабатывается одинаково - jvm кидает исключение. А уж вы решаете как именно его обрабатывать и обрабатывать ли вообще.

Да больной какой-то. "Я хочу чтоб было так как я хочу" - ну сделай так как хочешь. Но работать будет так как написано в документации.

Да, будет так, как в документации.
Но обсуждалось то не это, вы не заметили?
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37936156
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusДык. Эта. Проблема то как раз в том, что у File.delete() нет исключений (в SE5).Вы как-то сумбурно перескакиваете с предмета на предмет.
В том что вы поскипали было: "А не так, что я проверил, что файл есть , открываю его, а его нет. А ошибку уже не обрабатываю. Зачем? Я же уже проверил, что файл есть. Что за ерунда?". Если файл существует и собираетесь его открывать, то причём здесь delete()?
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37936165
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да мне кажется степл норм чувак, он уже давно все понял, просто гордость не позволяет признать
...
Рейтинг: 0 / 0
Простой вопрос про finally
    #37936181
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepplerusЕсли она создает, скажем, файл, то, после ее вызова, приходится в явном виде проверять, что такой файл действительно появился.
Или, что количество файлов после совпадает с количеством файлов до. Или еще какую-нибудь подобную фигню.
Но внутри одной системы хотелось бы этого избегать всеми возможными силами.Зачем, если без особых проблем может быть сделано примерно так:
Код: java
1.
2.
3.
4.
5.
6.
7.
public class Проба implements FileFilter {
  public boolean accept(File file) {
//    проверяем всё, что нужно
  }
  public static void main(String[] args) throws java.io.IOException {
    File[] listFiles = (new File(аргументы)).listFiles(new Проба());
...

Всё - есть массив с "правильным", на момент проверки, содержимым.
...
Рейтинг: 0 / 0
124 сообщений из 124, показаны все 5 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Простой вопрос про finally
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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