Skip to content

Latest commit

 

History

History
90 lines (70 loc) · 3.46 KB

03-multiple-exception.asc

File metadata and controls

90 lines (70 loc) · 3.46 KB

Múltiplas Exception no mesmo catch

Objetivo
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.

src/org/j6toj8/languageenhancements/multipleexception/MultipleException_Complete.java
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.

Saída no console
Exceção capturada: java.lang.NullPointerException
  1. Desde o Java 7, múltiplas exceções podem ser capturadas no mesmo catch.

  2. Apenas uma variável é permitida para um bloco catch, e deve estar localizada no final.

    src/org/j6toj8/languageenhancements/multipleexception/MultipleException_MultipleSameCatch.java
    link:../../../src/org/j6toj8/languageenhancements/multipleexception/MultipleException_MultipleSameCatch.java[role=include]
  3. 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.java
    link:../../../src/org/j6toj8/languageenhancements/multipleexception/MultipleException_Redundant.java[role=include]
  4. Ao fazer catch de múltiplas Exception, não é permitido sobrescrever a variável da exceção. Mas é possível se for apenas uma Exception no catch.

    src/org/j6toj8/languageenhancements/multipleexception/MultipleException_OverrideVar.java
    link:../../../src/org/j6toj8/languageenhancements/multipleexception/MultipleException_OverrideVar.java[role=include]
  5. 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.java
    link:../../../src/org/j6toj8/languageenhancements/multipleexception/MultipleException_GenericsLower.java[role=include]
  6. Assim como nas versões anteriores, Exceções repetidas ainda são proibidas.

    src/org/j6toj8/languageenhancements/multipleexception/MultipleException_RepeatException.java
    link:../../../src/org/j6toj8/languageenhancements/multipleexception/MultipleException_RepeatException.java[role=include]
  7. Assim como nas versões anterior, Exceções checadas (aquelas que herdam de Exception) só podem estar em um catch caso algo no try lance elas.

    src/org/j6toj8/languageenhancements/multipleexception/MultipleException_CheckedException.java
    link:../../../src/org/j6toj8/languageenhancements/multipleexception/MultipleException_CheckedException.java[role=include]
Referências