Hola!
Si analizamos bien el codigo no compilaría (Bueno si compilaría quizás en un contexto que no aplique estrictamente la regla de compilación, lo cual es inusual para Java)
El ejercicio es interesante pero hay una inconsistencia en la estructura del código proporcionado en la pregunta. El orden de los bloques catch viola la regla de que los tipos de excepciones más específicos deben ir antes que los más generales. Un compilador de Java estándar no permitiría compilar este código tal como está! generaría errores de compilación indicando que los bloques catch posteriores son inalcanzables. Además de la inconsistencia, creo que este codigo podría generar confusión en los estudiantes porque en clases no se ha explicado a profundida sobre este tema.