On 9/28/16 6:12 PM, Idan Arye wrote:
On Wednesday, 28 September 2016 at 21:00:00 UTC, Steven Schveighoffer
wrote:
Declaring variables that you need in the right scopes is pretty
straightforward. Having scopes magically continue around other
separate scopes (catch scopes) doesn't look correct. I get why it's
desired, but it doesn't look clean at all.

Consider this:

    try {
        auto foo = Foo();
    } catch (FooCreationException) {
        // ...
    } else {
        foo.doSomethingWithFoo();
    }
    // foo does not exist here

versus this:

    Foo foo;
    try {
        foo = Foo();
    } catch (FooCreationException) {
        // ...
    } else {
        foo.doSomethingWithFoo();
    }
    // foo exists here - it could be initialized, it could be not...


This is what I meant:

{
    Foo foo;
    try {
        foo = Foo();
    } catch (FooCreationException) {
        // ...
    } else {
        foo.doSomethingWithFoo();
    }
    // foo exists here, but may or may not be correct. Don't use it.
    // in fact, don't write any code here.
}
// foo doesn't exist here, just like in other example.

-Steve

Reply via email to