Qual a diferença de usar essas exceções mais específicas e utilizar a Exception?
Qual a diferença de usar essas exceções mais específicas e utilizar a Exception?
Exception é um caso geral de exceção, não é recomendado usar pois normalmente ela não direciona ao stacktrace o que realmente causou o erro. Em um código maior e complexo, é mais usual tratar as exceções causadas de forma individual. Se foi um erro de converter data seria um ParseException, por exemplo.
O tipo da classe (RuntimeException e Exception) extendida na hora da criação da sua própria exceção define se ela é Unchecked e Checked, respectivamente. Unchecked é a mais simples de utilizar. Basta lançar a referência que ela é acionada. Checked é mais rigoroso e exige que o método que for lançar essa exception tenha uma definição explicita na assinatura do método com a palvra reservada throws para manusear a exception. Veja um exemplo:
private static void metodo2() throws numberParException {
System.out.println("Ini do metodo2");
int i;
for(i = 1; i <= 5; i++) {
System.out.println(i);
}
System.out.println("Fim do metodo2 ");
if(i % 2 == 0) {
throw new numberParException("Número final do índice não é impar!");
}
}
Outra opção para tornar a exception manuseável utiliza-lo dentro de um try/catch, entretanto, a "maneabilidade" para Exceptions Checked deve ser empregado por todos os métodos que chamar a exceção - direta ou indiretamento - até o método main
Lembrando: Quando faz sentido, use uma exceção padrão em vez de criar uma própria.