> On 9 Oct 2020, at 11:11, Remi Forax <fo...@univ-mlv.fr> wrote:
> 
> Following the course on exceptions, where i explain that a catch() is an 
> instanceof,
> two different students ask me why catch() can use '|' in between the 
> exception types but instanceof can not.
> 
> i.e why this code works
>  try {
>    ...
>  } catch(RuntimeException | Error e) {
>    throw e;
>  } catch(Throwable t) {
>    ...
>  }
> 
> but this one doesn't
>  try {
>    ...
>  } catch(Throwable t) {
>    if (t instanceof RuntimeException | Error e) {
>      throw e;
>    }
>    ...
>  }
> 
> I wonder if people will want to do pattern matching on exceptions ?

I’m sure they will! (We mentioned adding pattern matching to catch in our 
overview document 
https://cr.openjdk.java.net/~briangoetz/amber/pattern-match.html 
<https://cr.openjdk.java.net/~briangoetz/amber/pattern-match.html>) The issue - 
as always - is how we reconcile the syntactic choices that have already been 
made, and the ones that are natural for our more general setting of pattern 
matching.

Gavin

Reply via email to