> 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