In a Java 7 multicatch block what is the type of the caught exception?

Andrew picture Andrew · Dec 5, 2011 · Viewed 7.3k times · Source

In a Java 7 multicatch block such as the following:

try {
    // code that throws exception
} catch (CharacterCodingException | UnknownServiceException ex) {
    // handle exception
}

what is the compile-time type of ex? Is it the most derived class that both exception types have in common? In this example that would be an IOException.

Answer

gustafc picture gustafc · Dec 5, 2011

Yes, the type of ex is the most specific supertype of both CharacterCodingException and UnknownServiceException, which would be IOException.

Edit: Straight from the horse's mouth on http://cr.openjdk.java.net/~darcy/ProjectCoin/ProjectCoin-Documentation-v0.83.html#multi_catch:

Informally, the lub (least upper bound) is the most specific supertype of the types in question.