Develop code that handles multiple Exception types in a single catch block. - Desenvolver código que lide com múltiplos tipos de Exception em um único bloco catch.
É esperado que o candidato saiba compreender e analisar o uso da instrução try-catch com múltiplos tipos de Exception
no mesmo bloco catch
.
Antes de continuar, com base no exemplo a seguir, entenda a execução do método main
e o que é apresentado no console após sua execução.
link:../../../src/org/j6toj8/languageenhancements/multipleexception/MultipleException_Complete.java[role=include]
O código anterior possui um bloco try-catch que você provavelmente já conhece. A novidade neste código está no primeiro bloco catch
, onde várias exceções são declaradas e capturadas ao mesmo tempo.
Exceção capturada: java.lang.NullPointerException
-
Desde o Java 7, múltiplas exceções podem ser capturadas no mesmo
catch
. -
Apenas uma variável é permitida para um bloco
catch
, e deve estar localizada no final.src/org/j6toj8/languageenhancements/multipleexception/MultipleException_MultipleSameCatch.javalink:../../../src/org/j6toj8/languageenhancements/multipleexception/MultipleException_MultipleSameCatch.java[role=include]
-
Não é permitido declarar exceções diferentes, mas que seriam redundantes levando em consideração a herança.
src/org/j6toj8/languageenhancements/multipleexception/MultipleException_Redundant.javalink:../../../src/org/j6toj8/languageenhancements/multipleexception/MultipleException_Redundant.java[role=include]
-
Ao fazer
catch
de múltiplasException
, não é permitido sobrescrever a variável da exceção. Mas é possível se for apenas umaException
nocatch
.src/org/j6toj8/languageenhancements/multipleexception/MultipleException_OverrideVar.javalink:../../../src/org/j6toj8/languageenhancements/multipleexception/MultipleException_OverrideVar.java[role=include]
-
Assim como nas versões anteriores, tipos mais genéricos de
Exception
devem vir depois, mais abaixo nos catch’s.src/org/j6toj8/languageenhancements/multipleexception/MultipleException_GenericsLower.javalink:../../../src/org/j6toj8/languageenhancements/multipleexception/MultipleException_GenericsLower.java[role=include]
-
Assim como nas versões anteriores, Exceções repetidas ainda são proibidas.
src/org/j6toj8/languageenhancements/multipleexception/MultipleException_RepeatException.javalink:../../../src/org/j6toj8/languageenhancements/multipleexception/MultipleException_RepeatException.java[role=include]
-
Assim como nas versões anterior, Exceções checadas (aquelas que herdam de
Exception
) só podem estar em umcatch
caso algo notry
lance elas.src/org/j6toj8/languageenhancements/multipleexception/MultipleException_CheckedException.javalink:../../../src/org/j6toj8/languageenhancements/multipleexception/MultipleException_CheckedException.java[role=include]
-
Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide (p. 291). Wiley. Edição do Kindle.
-
Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking. Java Documentation.