Uniform Handling of failure in switch -- Exhaustiveness on Exceptions?
Holo The Sage Wolf
holo3146 at gmail.com
Mon Jan 1 07:26:57 UTC 2024
Checked exceptions will remain totally checked.
Given a function f, let checkF be the set of checked exceptions, then the
expression:
switch(root(args)) {
case branch0 -> do0(args);
case branch1 -> do1(args);
...
case branch1 -> doN(args);
case throws fBranch0 -> handle0(args);
case throws fBranch0 -> handle1(args);
...
case throws fBranch0 -> handleM(args);
}
Will have the following set of checked exceptions:
(checkRoot - {fBranch0, ... fBranchM}) + checkDo0 + ... + checkDoN +
checkHandle0 + ... + checkHandleM
Where minus is set difference and plus is union
On Mon, 1 Jan 2024, 09:12 David Alayachew, <davidalayachew at gmail.com> wrote:
> Hello Amber Dev Team,
>
> I read Brian Goetz's "Case Effect on Switch" (looks like it recently got
> renamed to "Uniform handling of failure in switch"), and I have a quick
> question.
>
> I think it's cool to bring error handling into switch, but will we still
> get the exhaustiveness/totality on checked exceptions that we are used to
> on the try catch side?
>
> I feel like it would be weird and unintuitive if it didn't, since switch
> expressions already give us exhaustiveness/totality, and that's basically
> the biggest reason to use a switch expression in the first place. Leaving
> it out for exceptions would just feel mean. Plus, having this feature would
> really help with clarifying intent and with readability.
>
> Thank you for your time and help!
> David Alayachew
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/amber-dev/attachments/20240101/e65b4493/attachment.htm>
More information about the amber-dev
mailing list