D equivalent of Python's try..else
    Jonathan M Davis via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Sun Nov 22 01:48:58 PST 2015
    
    
  
On Sunday, November 22, 2015 07:41:40 Mike Parker via Digitalmars-d-learn wrote:
> On Saturday, 21 November 2015 at 13:57:01 UTC, Shriramana Sharma
> wrote:
> >
> > Hmm – I forgot Python has `else` for `for` and `while` too. But
> > it's a tad difficult to wrap one's mind around the meaning of
> > the word `else` in this particular context whereas it actually
> > means `nobreak`. Perhaps if this were added to D, `default`
> > would be a better choice of keyword, since we all know that
> > `default` (as in `switch`) is not executed if `break` happens.
> >
> > So:
> >
> > try { code_which_can_throw(); }
> > catch { handler(); }
> > default { only_if_didnt_throw(); }
> > finally { mandatory(); }
> >
> > How does that look?
>
> Ugly. There's absolutely zero need for this in D.
It's trivially changed to
try { code_which_can_throw(); only_if_didnt_throw(); }
catch { handler(); }
finally { mandatory(); }
So, even assuming that scope statements aren't the best fit (e.g. because
you actually need access to the exception, or you don't want it to  be
rethrown from the catch block), the default block is pretty pointless as far
as I can tell.
- Jonathan M Davis
    
    
More information about the Digitalmars-d-learn
mailing list