Здравствуйте, 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. По сути как первый вариант, но без вложенности.