Agora que terminamos uma breve teoria sobre como funcionam as exceções em Java, irei abordá-las de forma prática, como criar, tratar e lançar nossas exceções.
Supomos que iremos criar um módulo de manutenção de clientes (incluir, excluir, recuperar e atualizar), e convenhamos que ao efetuar tais processos possam ocorrer erros, como tentar recuperar um cliente e o mesmo não constar no banco de dados, incluir um cliente já existente, efetuar login e os dados estarem incorretos, etc. Então criaremos uma exceção genérica que representa os erros que podem ocorrer com o nosso módulo de manutenção de clientes.
Para criarmos nossa exceção basta estender a classe Exception, presente no pacote java.lang.Exception, da seguinte forma:
public class UserException extends Exception {
public UserException() {
super();
}
public UserException(String message) {
super(message);
}
}
E pronto, nossa exceção está criada! Agora vamos criar um método que valida um usuário, ou seja, toda vez que quisermos adicionar, recuperar, etc, passaremos para os respectivos métodos um modo de validar um usuário para verificar se ele possui dados válidos como id, nome, login, password, etc.
public void validateUser(User user) throws UserException {
boolean validate = true;
String msg = "";
if (user.getName() == null) {
msg = "Invalid Name!";
validate = false;
} else if (user.getPassword() == null) {
msg = "Password is Empty!";
validate = false;
}
if (!validate) {
throw new UserException(msg);
}
}
Analisando o código, na declaração do método utilizamos a palavra chave throws, isso significa que todo método que utilizar o “validateUser()” terá que tratar a exceção ou então utilizar a palavra chave throws novamente no cabeçalho do método para informar que ele não irá tratar a exceção naquele momento, ou seja estamos declarando nossa exceção. Na linha 22, utilizo a palavra chave throw, que indica que a exceção será lançada quando chegar naquela linha, e passo como parâmetro da exceção a minha mensagem de erro personalizada. Vejamos como funcionam o tratamento com o bloco try, catch, e a declaração utilizando throws.
Supomos que temos classe que responsável por efetuar o login do usuário chamada LoginUser, na qual possui um método para efetuar login, vejamos a versão do método utilizando try – catch:
public boolean login(User user) {
boolean validate = false;
try {
new User().validateUser(user);
validate = true;
System.out.println("Success on Login!");
} catch (UserException ex) {
System.out.println(ex.getMessage());
validate = false;
}
return validate;
}
Nessa versão do método login nós utilizamos o método validateUser() da classe User, e tratamos a exceção utilizando o bloco try – catch. Dentro do bloco validamos o usuário, caso tudo tenha ocorrido corretamente ele retorna verdadeiro, caso contrário, a execução entrará no bloco catch e lançará uma mensagem utilizando o método getMessage() da superclasse de todas as exceções e erros, Throwable. Vejamos agora a versão do método login() utilizando a palavra chave throws e deixando o tratamento para outro momento, efetuando somente a declaração da exceção.
public void login(User user) throws UserException {
new User().validateUser(user);
}
Nesse caso como não tratamos a exceção, simplesmente declaramos que ela pode ser lançada é necessário adicionar throws nomeDaExceção, no cabeçalho do método, lembrando que dessa forma eu estou deixando para a exceção ser tratada na próxima utilização do método login, diferente caso ao tivesse tratado a exceção.
Lembrando que também poderíamos ter utilizado a palavra chave throw(não confundam com throws), simplesmente para lançar nossa exceção em determinada parte do código, como fizemos na segunda listagem desse artigo.
Finalizamos aqui uma visão prática sobre o mecanismo de exceções em Java, sendo que essa é só a ponta do iceberg, pois ainda há bastante conteúdo sobre o assunto para se discutir, mas por hora fico por aqui, espero que tenham gostado e principalmente entendido, até o próximo artigo.
Agora que terminamos uma breve teoria sobre como funcionam as exceções em Java, irei abordá-las de forma prática, como criar, tratar e lançar nossas exceções.
Supomos que iremos criar um módulo de manutenção de clientes (incluir, excluir, recuperar e atualizar), e convenhamos que ao efetuar tais processos possam ocorrer erros, como tentar recuperar um cliente e o mesmo não constar no banco de dados, incluir um cliente já existente, efetuar login e os dados estarem incorretos, etc. Então criaremos uma exceção genérica que representa os erros que podem ocorrer com o nosso módulo de manutenção de clientes.
Para criarmos nossa exceção basta estender a classe Exception, presente no pacote java.lang.Exception, da seguinte forma:
public class UserException extends Exception {
public UserException() {
super();
}
public UserException(String message) {
super(message);
}
}
E pronto, nossa exceção está criada! Agora vamos criar um método que valida um usuário, ou seja, toda vez que quisermos adicionar, recuperar, etc, passaremos para os respectivos métodos um modo de validar um usuário para verificar se ele possui dados válidos como id, nome, login, password, etc.
public void validateUser(User user) throws UserException {
boolean validate = true;
String msg = "";
if (user.getName() == null) {
msg = "Invalid
Name!";
validate = false;
} else if (user.getPassword() ==
null) {
msg = "Password is
Empty!";
validate = false;
}
if (!validate) {
throw new UserException(msg);
}
}
Analisando o código, na declaração do método utilizamos a palavra chave throws, isso significa que todo método que utilizar o “validateUser()” terá que tratar a exceção ou então utilizar a palavra chave throws novamente no cabeçalho do método para informar que ele não irá tratar a exceção naquele momento, ou seja estamos declarando nossa exceção. Na linha 22, utilizo a palavra chave throw, que indica que a exceção será lançada quando chegar naquela linha, e passo como parâmetro da exceção a minha mensagem de erro personalizada. Vejamos como funcionam o tratamento com o bloco try, catch, e a declaração utilizando throws.
Supomos que temos classe que responsável por efetuar o login do usuário chamada LoginUser, na qual possui um método para efetuar login, vejamos a versão do método utilizando try – catch:
public boolean login(User user) {
boolean validate = false;
try {
new User().validateUser(user);
validate = true;
System.<em>out</em>.println("Success on Login!");
} catch (UserException ex) {
System.<em>out</em>.println(ex.getMessage());
validate = false;
}
return validate;
}
Nessa versão do método login nós utilizamos o método validateUser() da classe User, e tratamos a exceção utilizando o bloco try – catch. Dentro do bloco validamos o usuário, caso tudo tenha ocorrido corretamente ele retorna verdadeiro, caso contrário, a execução entrará no bloco catch e lançará uma mensagem utilizando o método getMessage() da superclasse de todas as exceções e erros, Throwable. Vejamos agora a versão do método login() utilizando a palavra chave throws e deixando o tratamento para outro momento, efetuando somente a declaração da exceção.
public void login(User user) throws UserException {
new User().validateUser(user);
}
Nesse caso como não tratamos a exceção, simplesmente declaramos que ela pode ser lançada é necessário adicionar throws nomeDaExceção, no cabeçalho do método, lembrando que dessa forma eu estou deixando para a exceção ser tratada na próxima utilização do método login, diferente caso ao tivesse tratado a exceção.
Lembrando que também poderíamos ter utilizado a palavra chave throw(não confundam com throws), simplesmente para lançar nossa exceção em determinada parte do código, como fizemos na listagem tal.
Finalizamos aqui uma visão prática sobre o mecanismo de exceções em Java, sendo que essa é só a ponta do iceberg, pois ainda há bastante conteúdo sobre o assunto para se discutir, mas por hora fico por aqui, espero que tenham gostado e principalmente entendido, até o próximo artigo.
