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

    +8

    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
    void Cluster::CloseConnection()
    {
        m_Connection->close();
        if (!m_Connection->IsOK())
            throw ConnectionError(m_Connection->LastError());
    }
    
    void ClusterGroup::RemoveCluster(int iIndex)
    {
        Cluster *pSubCluster = m_SubClusters->At[i];
        pSubCluster->CloseConnection();
        delete pSubCluster;
        m_SubClusters->SetAt(i, NULL);
    }

    И потекло...

    Запостил: Lavir_the_Whiolet, 06 Июня 2013

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

    • показать все, что скрытоЕсли честно, я не понимаю этой традиции кидать исключения из close. То же самое про жабовский Closeable.close() throws IOException.

      Как прикажете обрабатывать ошибку закрытия? Сделать-то всё равно уже нельзя. Большинство виденных мной обработчиков Closeable.close() в Java либо оборачивают его в try с пустым catch, либо используют Closeables.closeQuietly(), делающий то же самое.
      Ответить
      • показать все, что скрытоchecked exception там действительно жирно, но смысл кидать из close() усмотреть можно, хоть и с трудом. Если поток буферизован, то при вызове flush() из close() может внезапно закончиться место, что, возможно, должно потребовать удаления побитого файла, отката странзакций и других неприятных действий. Но на практике это нужно крайне редко.
        Ответить
      • показать все, что скрыторазве что сообщить в лог/пользователю пренеприятнейшее известие об этом
        Ответить

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