Forçar exception no TRY CATCH com método boolean

5 respostas
J

Estou precisando utilizar dentro de um try catch uma verificação booleana, exemplo:

try {
				
	if(Tools.verificaCNPJ(getEmpresa().getCnpj())==false){
			//forçar exception
			}
		    
		} catch (Exception e) {
			showMessage("CNPJ inválido");  
		}

Como sabem o método booleano não retorna uma exceção. O try catch está contido em um método que é chamado ao final de uma inserção no banco de dados, ou seja, faz a validação normal do campo. Preciso que ele entre na exception para não continuar o código do método. Caso alguém conheça alguma maneira melhor de resolver essa questão agradeço.

5 Respostas

H

throw new Exception("");

Só isso? O.o

J

O que acontece é que com essa exception o método teria que entrar na exception dele também, o que não acontece. Eu tenho uma outra forma de fazer isso, mas estou tentando fazer por esta, por ser mais elegante por assim dizer.

V

Não use exceptions para controle de fluxo. Você pode resolver a mesma coisa de maneira mais simples com um return:

if(!Tools.verificaCNPJ(getEmpresa().getCnpj())){ showMessage("CNPJ inválido"); return; }

E

Acho que ele está pegando o esquema do método “verify”:

http://docs.oracle.com/javase/1.4.2/docs/api/java/security/cert/Certificate.html#verify(java.security.PublicKey)

Ele lança exceções diferentes conforme o tipo de problema encontrado no certificado.

Eu, em particular, acho isso muito incômodo de trabalhar. De qualquer maneira, isso força o programador a tratar as exceções obrigatoriamente, o que pode ser bom ou não.

J
ViniGodoy, neste caso não funciona o return. Vou tentar explicar melhor como os métodos estão interligados. Existe uma classe abstrata(servindo de framework) que utiliza todos os processos envolvidos no JSF.
public final void incluir(ActionEvent actionEvent) {
		String msg=null;
        try {
        	preInclusao();
        	processaDadosComuns();
        	getService().create(bean);
        	msg="Inclusão realizada com sucesso!";
        	criar(null);
        	posInclusao();
        } catch (Exception e) {
        	msg="Ocorreu um problema no momento da inclusão -> "+e.getMessage();
        }
        
        showMessage(msg);  
    }

Então ao chamar o método incluir através do action do button são realizados todos esses processos mostrados acima. No caso estou fazendo essa validação específica dentro do método preInclusao(). Mas não funcionou com o return, passou direto e inseriu normalmente, preciso que ele entre na exception.

Criado 23 de outubro de 2012
Ultima resposta 24 de out. de 2012
Respostas 5
Participantes 4