Throwing from a lambda isn't supported by the compiler

Dennis dkorpel at gmail.com
Mon Sep 9 10:46:10 UTC 2019


On Monday, 9 September 2019 at 09:37:25 UTC, a11e99z wrote:
> cuz throwing exception ever is not compatible with any return 
> type so I dont see reasons do not allow such expressions

A throw statement can actually be seen as an expression returning 
a 'never' / 'bottom' type which is implicitly convertible to any 
return type. This is actually a really good example for the value 
of a bottom type as suggested in DIP1017:
https://github.com/dlang/DIPs/blob/master/DIPs/rejected/DIP1017.md

Such a shame it got rejected in favor of ugly 'no return' 
annotations, if only the DIP pointed out other use cases. Looking 
at the Formal Assessment section:
"He (Walter Bright) still thinks there is value in adding a 
bottom type to the language, but has decided to revisit the issue 
at a later date."

I hope a bottom type resolves this issue with throw statements in 
lambdas instead of another hack such as 'no return'.


More information about the Digitalmars-d-learn mailing list