Is this a decent use-case for goto in C?
Posted
by
Robz
on Programmers
See other posts from Programmers
or by Robz
Published on 2012-06-30T01:49:00Z
Indexed on
2012/06/30
15:24 UTC
Read the original article
Hit count: 234
I really hesitate to ask this, because I don't want to "solicit debate, arguments, polling, or extended discussion" but I'm new to C and want to gain more insight into common patterns used in the language.
I recently heard some distaste for the goto
command, but I've also recently found a decent use-case for it.
Code like this:
error = function_that_could_fail_1();
if (!error) {
error = function_that_could_fail_2();
if (!error) {
error = function_that_could_fail_3();
...to the n-th tab level!
} else {
// deal with error, clean up, and return error code
}
} else {
// deal with error, clean up, and return error code
}
If the clean-up part is all very similar, could be written a little prettier (my opinion?) like this:
error = function_that_could_fail_1();
if(error) {
goto cleanup;
}
error = function_that_could_fail_2();
if(error) {
goto cleanup;
}
error = function_that_could_fail_3();
if(error) {
goto cleanup;
}
...
cleanup:
// deal with error if it exists, clean up
// return error code
Is this a common or acceptable use-case of goto
in C? Is there a different/better way to do this?
© Programmers or respective owner