Search code examples
cif-statementreturn

Return error code after first detected error


I have a function which does some initialization and calls other functions, each of which returns an error code. I want to be able to return from this function after the first detected error like this:

int error_code = FirstFunction();
if (error_code != 0) {
    return error_code;
}
error_code = SecondFunction();
if (error_code != 0) {
    return error_code;
}
// etc...

However, not only does this look rather cumbersome, it also has multiple return statements, and for compliance reasons at my company this is not allowed.

How can I rearrange this so that there is only one return statement, but still stop after the first error code? The only way I can think of is to do nested if statements:

int error_code = FirstFunction();
if (error_code == 0) {
    error_code = SecondFunction();
    if (error_code == 0) {
        error_code = ThirdFunction();
        // etc...
    }
}
return error_code;

But this could get unreasonable pretty fast. Is there another way to do this?

EDIT: In my program, return code of 0 means success (OK) and non-zero means failure/error (NOT OK)


Solution

  • You don't have to nest all the function calls, the code below do the job as well and should comply with your code writing rules:

    error_code = FirstFunction();
    if (error_code == 0) {
        error_code = SecondFunction();
    }
    if (error_code == 0) {
        error_code = ThirdFunction();
    }
    // etc...
    return error_code;