Consensus on goto's into catch blocks

Brad Roberts braddr at puremagic.com
Thu Jun 13 11:50:49 PDT 2013


On 6/13/13 10:35 AM, Iain Buclaw wrote:
> Can someone remind me again what was last agreed when I brought this up?
>
> I seem to recall that this should be disallowed as is practically always a bug, also, and it skips
> any initialisation of the exception object. (See: http://dlang.org/statement.html - "It is illegal
> for a GotoStatement to be used to skip initializations.")
>
> Current failing test I want to have removed from the test suite.
>
> test/runnable/eh.d:
> void test8()
> {
>    int a;
>    goto L2;    // gdc Error: cannot goto into catch block
>
>    try {
>        a += 2;
>    }
>    catch (Exception e) {
>        a += 3;
> L2: ;
>        a += 100;
>    }
>    assert(a == 100);
> }
>
>
> Thanks
> Iain.

I think it should be illegal, but not because it's a catch block but because of the initialization. 
  If the catch was just "catch (Exception)" then it shouldn't be illegal.


More information about the Digitalmars-d mailing list