Leandro Lucarella wrote:

Go doesn't have exceptions, so scope(failure/success) makes no sense.
You can argue about if not having exceptions is good or bad (I don't
have a strong opinion about it, sometimes I feel exceptions are nice,
sometimes I think they are evil), though.

Just to compare the two styles...

Without exceptions, every step of the code must be checked explicitly:

// C code:
int foo()
{
    int err = 0;

    // allocate resources

    err = bar();
    if (err) goto finally;

    err = zar();
    if (err) goto finally;

    err = car();
    if (err) goto finally;

finally:
    // do cleanup

    return err;
}

(Ordinarily, the if(err) checks are hidden inside macros like check_error, check_error_null, etc.)

With exceptions, the actual code emerges:

// C++ or D code
void foo()
{
    // allocate resources

    bar();
    zar();
    car();
}

Ali

Reply via email to