Чистый подход к обработке ошибок в C

Я пишу программу на C, которая требует хорошей обработки ошибок. Код выглядит примерно так:

If(doWork("A")<0){
    return -1;   
}
If(doWork("B")<0){
    undoWork("A");
    return -1;
}
If(doWork("C")<0){
    undoWork("A");
    undoWork("B");
    return -1;
}
return 0;

Этот код работает, но выглядит очень беспорядочно, особенно у меня есть длинный список doWork(X)для вызова. Есть ли лучший и более чистый подход к обработке ошибок в этом случае?

7
задан Wei Shi 7 April 2012 в 02:29
поделиться