Exceptions

2 respostas
R

Pessoal, esta é minha primeira duvida.

unchecked

public class SaldoInsuficienteException extends RuntimeException {

SaldoInsuficienteException(String message) {

super(message);

}

}
checked

public class SaldoInsuficienteException extends Exception {

SaldoInsuficienteException(String message) {

super(message);

}

}

Por que minha classe SaldoInsuficienteException é unchecked e quando eu mudo a sua classe mae para Exception ela se torna checked?
Sendo que RuntimeException extends Exception
O fato de ser checked não passa pela herança?

e se eu fizer
public class SaldoInsuficienteException extends RuntimeException throws Exception {

Eu sei que nunca deverei usar isto, mas ficou a duvida…
Grato

2 Respostas

ribclauport

Bom, ja que falou em herança vamos la:

RuntimeExeption extends Exception --> RuntimeException é uma Exception, e é unchecked. Tudo que for um RuntimeException é unchecked!

Exception não é um RuntimeException!, se Exception não é um RuntimeException então Exception não é unchecked!

Por que minha classe SaldoInsuficienteException é unchecked e quando eu mudo a sua classe mae para Exception ela se torna checked?
Sendo que RuntimeException extends Exception
O fato de ser checked não passa pela herança?

Bom acho que é realmente um equivoco a afirmação acima certo, por que veja bem um cavalo é um animal, mas nem todo animal é um cavalo, temos os gatos, cachorros e tudo mais, sendo assim so para repetir, RumtimeException é uma Exception, mas nem toda Exception é um Runtime… já que para ser unchecked tem que passar no teste "é um" para Runtime Exception sua classe está herdando de exception, sendo assim é "unchecked".

Se fizer desta forma ae em cima tem uma classe RuntimeException pois SaldoInsuficienteException "herda" de RuntimeException, sendo assim você tem todos os metodos de RuntimeException e de Exception e de Throwable e de Object… ufa!, mais você lança uma Exception, veja creio que se você quer tratar somente exceções "unchecked" use RumtimeException, ae veja bem, você quer que quem use sua classe seja obrigado a "tratar" as exceptions? se sim você usa Exception…
que realmente é muito amplo…ou realmente a exceção condizente com o "perigo" que o método oferece IOExeption… e outras especificas daquela operação.

Espero ter ajudado.

joaoorso

coloque seu código entre as tags code …

Criado 8 de março de 2012
Ultima resposta 9 de mar. de 2012
Respostas 2
Participantes 3