try and catch, паранойя в использовании....
От: myaso  
Дата: 02.06.05 12:48
Оценка: :))) :)))
Всем привет!

У меня тут в последнее время появилось устойчивое желание использовать сабжевую конструкцию там где надо и не надо. Во всём нужно соблюдать золотую середину... Я её видать потерял чувство равновесия:( Просьба востановить! Хотя может быть я прав:)

И так. Например изначально каждую функцию я хочу оформлять вот так:
bool func()
{
    res = false;

    try
    {
        ......

        res = true;
    }
    catch (...)
    {
        res = false;
    }

    return res;
}


далее из-за боязни всего что движеться и не движеться там где я выделяю память я хочу делать вот так
bool func()
{
    res = false;

    try
    {
        void* pTmp = malloc(size);
        if (pTmp != NULL)
        {
            try
            {
                ...........

                res = true;
            }
            catch (...)
            {
                res = false;
            }

            free(pTmp);

        }        
    }
    catch (...)
    {
        res = false;
    }

    return res;
}


соотвественно если мне нужно пару раз выделить память. я и там прикручу сабж

bool func()
{
    res = false;

    try
    {
        void* pTmp1 = malloc(size);
        if (pTmp1 != NULL)
        {
            try
            {
                void* pTmp2 = malloc(size);
                if (pTmp2 != NULL)
                {
                    try
                    {
                        ...........

                        res = true;
                    }
                    catch (...)
                    {
                        res = false;
                    }

                    free(pTmp2);

                }

                res = true;
            }
            catch (...)
            {
                res = false;
            }

            free(pTmp1);

        }        
    }
    catch (...)
    {
        res = false;
    }

    return res;
}


а ещё понравилось делать вот так

bool func()
{
    res = false;

    try
    {
        тут что-то делается. потом проверяется условие если фолс то делаем throw
        if (condition == false)
        {
            throw -1;
        }
        иначе продолжаем работу....

        потом ситуация может повториться
        if (condition == false)
        {
            throw -1;
        }

    }
    catch (...)
    {
        res = false;
    }

    return res;
}



Что скажите? Говорить о том что например тот же malloc или любая функция которуюя хочу дёрнуть не кидает експешин меня никоим образом не успокаивает. Я из-за недоверия ей всё равно хочу взять её в try, не смотря ни на что, даже ни смотря на более медленную работу. Вот такие пироги.

PS наверное хотелось бы для начала поговорить о С++, поэтому SEH с её __finally не стоит рассматривать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.