Я пишу программу на 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)
для вызова. Есть ли лучший и более чистый подход к обработке ошибок в этом случае?