No artigo anterior demonstrei o novo try capaz de encerrar recursos sem requerer do programador linhas de códigos improdutivas para isso.
Em sequência a produtividade no tratamento de exceções, vamos explorar o bloco multi-catch.
Do que se trata?
O Java 7 incorporou também uma forma de capturar mais de um tipo de exceção desde que as exceções capturadas herdem em algum momento de sua genealogia a mesma superclasse.
O exemplo a seguir lança propositalmente uma das exceções como IOException, IOError e InternalError. Estas exceções têm em comum Throwable como superclasse, por isso podem ser unidas em um único bloco capaz de capturar estas exceções.
Exemplo 1 - Testando o bloco multi-catch
import java.io.IOError;
import java.io.IOException;
public class TestaMultiCatch {
public static final int MINIMUM = 1;
public static final int MAXIMUM = 15;
public static void main(String[] args) {
try {
int randomValue = MINIMUM + (int) (Math.random() * MAXIMUM);
if (randomValue <= 5) {
throw new IOException("Ocorrido IOException");
} else if (randomValue <= 10) {
throw new IOError(new Throwable("Ocorrido IOError"));
} else {
throw new InternalError("Ocorrido InternalError");
}
} catch(IOException | IOError | InternalError e) {
System.out.println(String.format("Falha lançada para teste: %s", e.getMessage()));
}
}
}
O lançamento da exceção é aleatório porque um valor aleatório entre 1 e 15 é gerado para randomValue. Logo após, são realizados testes de períodos numéricos para lançar as exceções variavelmente.
Importante: Se a superclasse de uma das exceções do exemplo for adicionada no mesmo catch, a exceção deve ser removida porque será capturada pela sua superclasse.
Até breve.
Nenhum comentário:
Postar um comentário