Bom dia a todos,
Tenho uma simples duvída no meus estudos para OCJP
tenho plena conciencia da diferença entre metodos sobrecarregados e subscritos.(de acordo com o SCJP da kathy e do Camilo Lopes)
uma simples duvida sobre exceções
Nos livros indica a seguinte regra -
Métodos Subscritos Podem - Lançar exceções Novas e Menos restritivas. OK !..
também vi que quando não declaro uma excessão , implicitamento meu metodo lança uma exceção nao verificada
RuntimeException , que seria a excessão da JVM isto?
até aqui tudo bem … mais ai entra a questão Lançar exceções Novas e Menos restritivas
como vou saber que exceção X é menos restritivas Y ou mais abrangente
por exemplo o metodo funcionaria segundo o livro do Camilo Lopes.
[code]public class A{
void cor(){}
}
public class B extends A(){
void cor() thows NumberFormatException{
//* O Codigo compila a subclass esta lançando uam exceção mais abrangente que da superclass}}[/code]
mais como vou saber qual é mais abrangente que NumberFormatEx…poderia colocar sei lá NullPointerException como vou saber
se posso ou não … tem alguma classificação das exceções da API?
Eu compreendo da seguinte maneira, para saber se houve erro de formatação de número (NumberFormatException), primeiramente, preciso saber se aquela variável está instanciada. Se ela não está, recebo um NullPointerException, certo?
Qual é mais abrangente, neste caso?
[quote]para saber se houve erro de formatação de número (NumberFormatException), primeiramente, preciso saber se aquela variável está instanciada[/quote] se acompanhei o raciocinio esta seria a mais especifica pois necessita de uma variavel instanciada com um valor inválido .
[quote]
Se ela não está, recebo um NullPointerException, certo? [/quote]
Aqui ja é mais abrangente pois só pelo fato de a variavel nao estar sendo inicializada (null) já aplica o erro
mais e por exemplo StackOverFlow acho que é assim que se escreve então seria mais restritiva ainda por ser uma função mais especifica seria isto?
Então, considere uma lista de Integer que está sendo preenchida em um loop infinito.
Em algum momento ela irá disparar um stackOverflow. Como a List é um objeto, caso não esteja inicializada, a JVM lança o NPE. Caso os Integers que são inseridos nela estejam nulos, NPE. Caso o formato seja incorreto, NFE. Caso tudo esteja ok, o loop infinito irá estourar, causando a SOE.
SOE = stackOverException?