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