1. C++ / Говнокод #3610

    +165

    1. 1
    throw new std::bad_alloc();

    У нас в кодеконвеншене принято передавать исключения по указателю. Вчера обнаружил вот это во многих перегрузках оператора new, да и в прочих местах по проекту.

    Запостил: Говногость, 01 Июля 2010

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

    • Мило, а пацаны-то не знают и ловят-поди по ссылке :-(((
      Ответить
    • Что-то такое уже было.
      Ответить
    • А зачем по указателю ? Это ж надо не забыть потом ещё удалить.
      Ответить
      • (не в тот ГК коммен запостил, сорри =3)
        Ответить
    • Ещё весело то, что bad_alloc - исключение ошибки выделения памяти по new.
      Ответить
      • В данном случае bad_alloc может значить всё что угодно.
        Ответить
        • Не просто
          bad_alloc
          , а
          std::bad_alloc
          .
          Стандартную библиотеку С++ вам нужно повторить чуток...
          Ответить
          • try
            {
               throw std::bad_alloc();
            }
            catch( std::bad_alloc& err )
            {
               std::cout << "Нехватка памяти ?\n";
            }


            И где тут ошибка выделения памяти ?
            Ответить
            • Основной комментарий к коду прочтите:
              >Вчера обнаружил вот это во многих перегрузках оператора new, да и в прочих местах по проекту.

              Знаете, я тоже так могу сказать, что генерю исключение ArrayOutOfRange просто от нефиг делать везде по коду, что-бы его потом поймать try catch просто так. Это уже больше похоже на индуский стиль, где платят за строчки кода. В двойне говнокод.
              Ответить
              • Так а я о чем говорю. Следуя тому же комментарию к коду : "да и в прочих местах по проекту."
                Рукописная генерация исключения ещё ни о чем не говорит. Вот если бы родной не перегруженный new это генерил, тогда да - ошибка выделения памяти. А если уж кодер сам throw вызвал, то может быть всё что угодно, независимо от класса исключения. В гк именно этот самописный вызов.
                Ответить
    • > У нас в кодеконвеншене принято передавать исключения по указателю

      Ужас.
      Ответить

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