try {
} catch(ParseException e) {
throw new RuntimeException();
}
try {
} catch(ParseException e) {
throw new RuntimeException(
e.toString());
}
try {
} catch(ParseException e) {
throw new RuntimeException(
e.getMessage());
}
try {
} catch(ParseException e) {
throw new RuntimeException(e);
}
Estes códigos apenas embalam o erro em uma RuntimeException
de diferentes maneiras. Nenhum deles realmente fornece uma boa informação ao chamador. O primeiro perde toda a informação. O segundo pode fazer alguma coisa dependendo da informação que toString()
gerar. A implementação padrão de toString()
lista o nome completamente qualificado da exceção seguido do atributo message
. Aninhar muitas exceções irá produzir uma longa e feia string inadequada para o usuário. O terceiro preserva apenas a mensagem, que é melhor do que nada. O último preserva a causa, mas deixa que o atributo message
da RuntimeException
fique o toString()
da sua causa (o que gera o mencionado anteriormente). A mais útil e legível versão é propagar somente a mensagem na RuntimeException
e passar a exceção original como causa.
try {
} catch(ParseException e) {
throw new RuntimeException(
e.getMessage(), e);
}