diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java index 284b0f09e5f47..6c1a8b0dd5ed7 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java @@ -1827,7 +1827,8 @@ private void handleSwitch(JCTree switchTree, unguarded && !patternType.isErroneous() && types.isSubtype(types.boxedTypeOrType(types.erasure(expectedType)), - patternType); + patternType) && + !c.throwsCase; //TODO: there should be two distinct "unconditional" checks, one for "normal" cases, one for "exceptional" cases if (unconditional) { if (hasUnconditionalPattern) { log.error(pat.pos(), Errors.DuplicateUnconditionalPattern);