Expression switch exception naming
Brian Goetz
brian.goetz at oracle.com
Fri Mar 30 16:32:16 UTC 2018
Summarizing what I heard: seeing Error is your trigger to "go fix your
classpath and recompile". And implicitly, you're saying: if it is an
exception (no matter how clearly worded about inconsistent assumptions
across classes), it is far less likely to trigger this reaction?
>
> (And, we've told people for years that its OK to add enum constants.)
>
>
> Yes, but we are deciding to reverse that decision 15 years later.
> We're doing that because we think it's worth it, but let's at least be
> clear about the fact that that is what we're doing.
>
Let's back up. Are we really reversing this? Or are we doing
something more subtle?
Is it OK to add enum constants if they are not published across
maintenance boundaries?
Is it OK to add enum constants if you don't use expression switches?
Is it OK to add enum constants if you use expression switches with
explicit defaults?
Suppose you publish an API that has
enum TrafficLight { RED, YELLOW, GREEN }
And I depend on your API with an optimistically exhaustive switch
(OES). Then you add BLUE**
So, who's at fault?
- You, for adding a switch to an enum that is published across a
maintenance boundary?
- Me, for OESing on an enum imported across a maintenance boundary?
- Java, for letting me OES across a maintenance boundary?
(The latter is a new idea, but I think is what you're getting at --
perhaps the rule should be that _within a module_, which is expected to
be co-compiled, its OK to leave off the default, but for "foreign"
enums/sealed types, we're not going to put any faith in the claim of
sealed-ness, and make you handle the default explicitly?
**Note that just _adding_ an enum is not enough to trigger an error.
Someone actually has to pass that enum to me. And I have to switch on
it. And that switch has to be optimistically exhaustive.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/amber-spec-experts/attachments/20180330/749d063b/attachment.html>
More information about the amber-spec-experts
mailing list