На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (17) « Первая ... 6 7 [8] 9 10 ...  16 17 все  ( Перейти к последнему сообщению )  
> Программист-профессионал vs программист-любитель
    Хехе. Говнокодный компилятор D (очень маргинальный язык :)) вообще не освобождает память. Типа зачем ее освобождать, если после компиляции очередного файла выполнение программы завершается и вся память сама собой вернется ОС. Странный подход, но нельзя сказать, что он лишен логики :)
      Цитата sergioK @
      Ну все подряд делать closeable только ради try-with-resource это перегиб

      Зачем все подряд? Только то, что владеет ресурсом.
        Цитата korvin @
        А при чем тут Питер?

        Я имел в виду EMC в Питере.
          Цитата MyNameIsIgor @
          Я имел в виду EMC в Питере.

          Ты там работаешь?
            Цитата zveroboy @
            Цитата MyNameIsIgor @
            Я имел в виду EMC в Питере.

            Ты там работаешь?

            Нет
              Цитата D_KEY @
              Цитата sergioK @
              Ну все подряд делать closeable только ради try-with-resource это перегиб

              Зачем все подряд? Только то, что владеет ресурсом.

              вот пример , как его перестроишь на try-with resources ?

              ExpandedWrap disabled
                 OutputStreamWriter wr = null;
                    BufferedReader rd = null;
                 
                    try {
                        // Send data
                        URL url = new URL(urlAdress);
                        URLConnection conn = url.openConnection();
                        conn.setDoOutput(true);
                        OutputStream outputStream = conn.getOutputStream();
                        wr = new OutputStreamWriter(outputStream);
                        wr.write(data);
                        wr.flush();
                 
                        // get response in order to complete sending the request
                        rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                 
                    } catch (ConnectException e) {
                        LogUtil.logMessage("sendNotificationRequest", "UI is down - notification wasn't sent", logger, LogUtil.INFO);
                    } catch (Exception e) {
                        LogUtil.logError("sendNotificationRequest", e, logger);
                    } finally {
                        try {
                        if (wr != null) {
                            wr.close();
                        }
                        if (rd != null) {
                            rd.close();
                        }
                        } catch (IOException e) {
                        LogUtil.logError("sendNotificationRequest", e, logger);
                        }
                    }
                Цитата sergioK @
                вот пример

                Лапша то какая :crazy:
                Цитата sergioK @
                как его перестроишь на try-with resources ?

                ExpandedWrap disabled
                  try {
                      // Send data
                      URL url = new URL(urlAdress);
                      URLConnection conn = url.openConnection();
                      conn.setDoOutput(true);
                      OutputStream outputStream = conn.getOutputStream();
                      try(OutputStreamWriter wr = new OutputStreamWriter(outputStream))
                      {
                          wr.write(data);
                          wr.flush();
                      }
                   
                      // get response in order to complete sending the request
                      try(BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {}
                   
                  } catch (ConnectException e) {
                      LogUtil.logMessage("sendNotificationRequest", "UI is down - notification wasn't sent", logger, LogUtil.INFO);
                  } catch (IOException e) {
                      LogUtil.logError("sendNotificationRequest", e, logger);
                  } catch (Exception e) {
                      LogUtil.logError("sendNotificationRequest", e, logger);
                  }
                  Цитата MyNameIsIgor @
                  Лапша то какая

                  Китайская, похоже.
                    Цитата applegame @
                    Говнокодный компилятор D (очень маргинальный язык ) вообще не освобождает память.

                    Интересный подход :D А какой из компиляторов так делает?
                      Не очень знаю особенности Java, но в примере, приведённом выше, бросилось в глаза, почему конструкторы внутри try. Про C# могу сказать, что инициализатор оператора using выполняется перед блоком try. В версиях .Net до 4.5 была даже опасная ошибка с перемещением операторов в try:
                      ExpandedWrap disabled
                        try
                        {
                        _readerWriterLock.AcquireWriteLock();
                        //...do stuff
                        }
                        finally
                        {
                        _readerWriterLock.ReleaseWriteLock();
                        }


                      А при обработке подобных ресурсов (как в примере выше) я обычно просто использую вложенные операторы using.
                        Цитата Ilya81 @
                        Не очень знаю особенности Java, но в примере, приведённом выше, бросилось в глаза, почему конструкторы внутри try.

                        потому что иначе не скомпилируеться ,в С# нет throws, который обязывает сделать
                        try catch .

                        И там и там косяк(try понимает только те кто implement disposable ) а точнее попытка компенсироваить отсутсвие деструктора , Да если обьек member класса , то try не поможет
                          Цитата Ilya81 @
                          но в примере, приведённом выше, бросилось в глаза, почему конструкторы внутри try.

                          Это как раз вместо using в C#. try with resources
                            Цитата D_KEY @
                            Это как раз вместо using в C#

                            Он про
                            ExpandedWrap disabled
                              try {
                                File f = new File("...");
                                // do something with f
                              } finally {
                                f.close();
                              }

                            вместо
                            ExpandedWrap disabled
                              File f = new File("...");
                              try {
                                // do something with f
                              } finally {
                                f.close();
                              }

                            как я понял из его примера. Суть в том, что, если в конструкторе внутри try возникнет исключение например и ресурс не будет захвачен, то finally все равно выполнит код по освобождению ресурса. Поэтому у сержио проверка на null внутри finally.

                            Кстати, ни в примере сержио, ни в примере Игоря нет вызова conn.disconnect(). Я конечно хз насколько он необходим, но когда сам искал пример работы с http, нашел пример, в котором этот самый conn.disconnect() есть.
                              Цитата korvin @
                              Я конечно хз насколько он необходим, но когда сам искал пример работы с http, нашел пример, в котором этот самый conn.disconnect() есть.

                              А я сам хз, я просто код исправлял без потери семантики :D
                                Цитата MyNameIsIgor @
                                А я сам хз, я просто код исправлял без потери семантики

                                А, ну да, не подумал. =)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (17) « Первая ... 6 7 [8] 9 10 ...  16 17 все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0490 ]   [ 15 queries used ]   [ Generated: 18.06.25, 16:24 GMT ]