Galera essa tem um monte de construtor, cada um com parâmetro diferente, alguém pode me explicar o que é isso.
package model.dao;
public class LivrariaDAOException extends Exception {
private static final long serialVersionUID = 1L;
public LivrariaDAOException(){
}
public LivrariaDAOException(String arg){
super(arg);
}
public LivrariaDAOException(Throwable arg){
super(arg);
}
public LivrariaDAOException(String arg, Throwable arg1){
super(arg,arg1);
}
}//end class
São construtores sobrecarregados (overloaded).
Você pode criar instâncias dessa classe chamado qualquer um desses construtores.
Cada construtor chamará super(), passando o parâmetro fornecido. Inclusive, o primeiro construtor (o sem argumentos) também chamará super().
Dada a explicação acima, os seguintes códigos são válidos:
Exception ex = new Exception("Mensagem");
String msg = "Mensagem";
LivrariaDAOException liv = new LivrariaDAOException();
LivrariaDAOException liv2 = new LivrariaDAOException(msg);
LivrariaDAOException liv3 = new LivrariaDAOException(new Exception("Mensagem"));
LivrariaDAOException liv4 = new LivrariaDAOException("Mensagem", ex);
Quando você cria (constrói) uma classe, o compilador chama um construtor padrão, se você não declarar nenhum. Este construtor padrão será um construtor sem argumentos. Agora se você escrever um construtor para sua classe, você estará sobrecarregando o construtor (contrutores sobrecarregados). Desta forma, o construtor padrão não será mais chamado pelo compilador, mas sim o construtor que você escreveu.
Porém você pode escrever, não só um construtor, mas vários construtores sobrecarregados, como neste seu exemplo aí. O que vai decidir quando um ou outro será chamado, será o argumento que você irá passar para o construtor.
Por exemplo:
LivrariaDAOException exemplo = new LivrariaDAOException(String teste)
Vai chamar a primeira versão do seu construtor, que é o que está esperando por uma String.
Deu para entender?
Ow gente valeu mesmo, tenho só mais uma dúvida:
já que o método LivrariaDAOException extends Exception, eu poderia ao invés de criar essa classe, utilizar logo a classe Exception por exemplo:
throw new Exception(String teste);
[quote=efcjunior]Ow gente valeu mesmo, tenho só mais uma dúvida:
já que o método LivrariaDAOException extends Exception, eu poderia ao invés de criar essa classe, utilizar logo a classe Exception por exemplo:
throw new Exception(String teste);
[/quote]
Ola,
Pode, pode sim, mas vc tem que avaliar, para certas exceptions é legal vc criar uma extensão, como vc fez.
[quote=BrunoCarlo][quote=efcjunior]Ow gente valeu mesmo, tenho só mais uma dúvida:
já que o método LivrariaDAOException extends Exception, eu poderia ao invés de criar essa classe, utilizar logo a classe Exception por exemplo:
throw new Exception(String teste);
[/quote]
Ola,
Pode, pode sim, mas vc tem que avaliar, para certas exceptions é legal vc criar uma extensão, como vc fez.[/quote]
Como assim, quais exceptions por exemplos deveria ser tratada desta maneira ?
[quote=efcjunior][quote=BrunoCarlo][quote=efcjunior]Ow gente valeu mesmo, tenho só mais uma dúvida:
já que o método LivrariaDAOException extends Exception, eu poderia ao invés de criar essa classe, utilizar logo a classe Exception por exemplo:
throw new Exception(String teste);
[/quote]
Ola,
Pode, pode sim, mas vc tem que avaliar, para certas exceptions é legal vc criar uma extensão, como vc fez.[/quote]
Como assim, quais exceptions por exemplos deveria ser tratada desta maneira ?[/quote]
Bom, como no teu caso, uma DAOException, que vc pode incluir logs para especificar melhor o pq da exception… e para que as classes que usem os metodos que lançam esta exception especifica fique “melhor escrito”, e saiba o pq da exception, desta forma vc consegue tratar melhor o erro, por exemplo:
public class SameDAO ...{
public boolean save(SameObject so) throws DAOException, SQLException{....
Um exemplo bem básico, desta forma se o que der for um DAOException o metodo que chama sabe que é um erro que vc tratou e verificou que o metodo save não pode executar porque uma verificação deu erro… tal como um campo que não aceita null e a classe tava com null… coisas assim. e se vier um SQLException é pq é um erro de “programação” ou conexão… e deve ser tratado, para não exibir uma coisa “feia” para o usuário… e deve ser reportada para um admin do programa…
Saca?