On Monday, 5 September 2016 at 19:12:02 UTC, Jacob Carlborg wrote:
On 2016-09-05 20:57, pineapple wrote:

In this case, the catch block will catch both errors from do_a_thing and
depends_on_success_of_thing.

Then move it to after the "finally" block.

It would actually have to be inside the "finally" block to reproduce the exact behavior. I included an analog in the original post - I'm not saying that this behavior can't be achieved now, but that this is a concise and more readable pattern which, when utilized, makes it more difficult to accidentally write error-prone code.

Which is easier to read and to write? Which is more maintainable? Which is less prone to programmer errors? This?


    bool success = false;
    try{
        do_a_thing();
        success = true;
    }catch(Exception exception){
        handle_error();
    }finally{
        try{
            if(success){
                depends_on_success_of_thing();
            }
        }finally{
            do_this_always();
        }
    }

Or this?

    try{
        do_a_thing();
    }catch(Exception exception){
        handle_error();
    }else{
        depends_on_success_of_thing();
    }finally{
        do_this_always();
    }



This?

    try{
        do_a_thing();
    }else{
        depends_on_success_of_thing();
    }

Or this?

    bool success = false;
    try{
        do_a_thing();
        success = true;
    }finally{
        if(success){
            depends_on_success_of_thing();
        }
    }

Reply via email to