Re: Обработка ошибок и корректный выход
От: Roman Odaisky Украина  
Дата: 01.07.06 21:35
Оценка: :)
Здравствуйте, MBy, Вы писали:

MBy>Привет!


MBy>Пишу на Си. Например, некая ф-ия не смогла что-то выполнить и вернула ошибку. Продолжение выполнения программы стало безсмысленным. Как в таком случае правильнее всего обработать эту ошибку и выйти из программы? При том следует учесть, что необходимо закрыть n-ое количество файлов и вернуть в кучу выделиную память, то есть сделать не выброс а корректное завершение.


Ручками, ручками! Вариантов есть.

X x;
if(initX(&x))
{
    Y y;
    if(initY(&y))
    {
        ...
        closeY(&y);
    }
    closeX(&x);
}

X x;
if(!initX(&x))
{
    return 0;
}

Y y;
if(!initY(&y))
{
    closeX(&x);
    return 0;
}

...

closeY(&y);
closeX(&x);

Еще можно с goto. По сути как первый вариант, но без вложенности.
До последнего не верил в пирамиду Лебедева.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.