1. Java / Говнокод #13527

    +111

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    public void close() throws IOException {
        try {
          flush();
        } catch (IOException ignored) {
        }
        out.close();
    }

    java.io.FilterOutputStream

    Запостил: someone, 01 Августа 2013

    Комментарии (9) RSS

    • Экстренный выход ?
      Все равно по рукам надавать
      Ответить
    • А что такого? autoflush. Хуже когда его нету.
      Ответить
      • Игнорируется исключение при flush. Никуда не сообщается, даже в лог. И это при том, что close вообще-то throws IOException, казалось бы, пусть себе бросает.
        Ответить
        • out.close() и бросит.
          Ответить
        • try{
          flush();
          }finally{
          out.close();
          }
          ?
          Ну в принципе получше, да.

          > И это при том, что close вообще-то throws IOException, казалось бы
          В 99% cлучаев этот IOException от close глушат при вызове, никуда не сообщая.
          Ответить
          • Кстати, а чем это лучше, чем просто close()? close() же, по идее, сам сделает flush перед тем как закрывать? Или все-таки не сделает?
            Ответить
            • >Или все-таки не сделает?
              Так в посте и приведен close!
              Этот, например делает.
              Ответить
              • Все, понял в чем фишка. Невнимательно прочел код, и подумал, что он флашит и следом закрывает низлежащий поток. Но на самом деле флаш он вызвал у себя (или у потомка), чтобы сбросить свой буфер.
                Ответить
                • Я, черт возьми, точно так же его прочитал :)
                  Но мне, все таки, кажется, что вариант с finally получше будет
                  Ответить

    Добавить комментарий