Boa noite!
Ficaram claras as particularidades das exceções checked e unchecked. Mas, se ambas funcionam da mesma forma, qual a vantagem de usar checked sendo que a implantação é mais complexa?
Obrigado!
Boa noite!
Ficaram claras as particularidades das exceções checked e unchecked. Mas, se ambas funcionam da mesma forma, qual a vantagem de usar checked sendo que a implantação é mais complexa?
Obrigado!
Oi Eder!
A ideia é justamente você dar a chance de quem chama o método que pode lançar uma exception se recuperar da exceção, e fazer com que quem use o método que lança a exception trate isso em tempo de compilação (já que se voce nao usa o try-catch ele não compila o código e vc tem que no minimo por o throws, no caso das checked exceptions).
Então teria essa vantagem de ser mais dificil quem chama um método que lança uma checked exception
simplesmente não tratar, já que o aviso do compilador está lá.
A ideia básica seria: se você pode se recuperar do erro, use checked exceptions, se são erros de programação, que você conseguiria resolver no código (como um NullPointerException
), use unchecked exceptions.
Dentro das APIs do próprio Java temos alguns exemplos disto. Quando você tenta ler um arquivo, entre o momento que você fez seu programa e o momento que ele é executado, o arquivo pode não existir mais, por exemplo. Portanto quando você lê e escreve em arquivos, no Java, as classes podem lançam exceptions do tipo IOException
.
A IOException
é checked e assim você tem que escrever o try-catch
pra o seu código que lê um arquivo compilar. Dessa forma você pode fazer dentro do catch
algo para se recuperar do erro.
Como recomendação de leitura, deixo este artigo do blog da caelum
Espero ter ajudado, abraço!
Bastante esclarecedor! Agradeço.