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.
Translate
Mostrando postagens com marcador tratamento de múltiplas exceções. Mostrar todas as postagens
Mostrando postagens com marcador tratamento de múltiplas exceções. Mostrar todas as postagens
quinta-feira, 31 de janeiro de 2013
Assinar:
Postagens (Atom)