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

    +92

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    protected IOException copyRange(InputStream istream, ServletOutputStream ostream) {
    
            // Copy the input stream to the output stream
            IOException exception = null;
            byte buffer[] = new byte[input];
            int len = buffer.length;
            while (true) {
                try {
                    len = istream.read(buffer);
                    if (len == -1) {
                        break;
                    }
                    ostream.write(buffer, 0, len);
                } catch (IOException e) {
                    exception = e;
                    len = -1;
                    break;
                }
            }
            return exception;
    
        }

    Си-стайл в исходниках Tomcat. Зачем кидать исключения, если их можно возвращать вместо кода ошибки?

    Запостил: Eyeless, 01 Августа 2011

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

    • апачи же, дикари.
      Ответить
    • как по мне довольно удобный и интересный подход.
      Ответить
    • А если в коде произойдет исключение не наследованное от IOException, то случится отсос.
      Ответить
      • все исключения, которые могут возбудиться внутри try/catch либо из иерархии IOException, либо из RuntimeException т.е. идеологически все более чем правильно :)
        Ответить
        • >более чем правильно
          Это как?
          Сегодня покрывается IOException, а завтра - может быть уже и нет. С точки зрения развития кода подход, который заключается в возврате исключения через return, трудно поддерживать.
          Ответить
          • да, мы таких ребят, кто так пишет - не поддерживаем
            Ответить
    • Вот и в итоге из-за таких программеров и складывается мнение о языке в целом.
      Ответить
    • А немного подумать, не?
      Это все таки не хеловолд и производительность имеет значение.
      Ответить
      • И каким же образом ловля и возвращение исключения повышает производительность?
        Ответить
        • Не тратятся ресурсы на новый выброс эксепшена.
          К.О.
          Ответить
          • lolwut? Вы исключение как что-то с трудом поддающееся броску себе представляете? Какие на это тратятся ресурсы?
            В этом случае его вообще ловить на этом уровне не надо было, все равно сразу break и return происходит.
            Ответить
            • Идиоты
              Ответить
            • Выброс эксцепшена - довольно затратная операция. Только именно в этом коде выигрыш в производительности не найдёшь. Тут просто говно вкралось. Может, жертва рефакторинга.
              Ответить
          • Бу-га-га!
            Ответить
      • Бу-га-га!
        Ответить
    • Посмотрел внутрь кода. Это они так finally блок делали
      Ответить
    • показать все, что скрытоvanished
      Ответить

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