Como parar a execução no tratamento de erro

Prezados, bom dia!

Estou há um bom tempo sem programar, e estou voltando agora com dúvidas bobas.
Não consigo lembrar como parar a execução de um método tratado.

Tenho um método circundado com try/catch no qual valida se campos estão vazios.
Ele faz a validação e avisa que deve ser preenchido o campo, porém a execução continua até chegar na base de dados e ocorrer NullPoniterException. Alguém dá uma luz para parar a execução no tratamento e manter a tela de cadastro para o usuário fazer a correção?

Seguem trechos do código:

Método montaObjeto

protected Produto montaObjeto() {
	produto = new Produto();
	produtoController = new ProdutoController();
	
	try {
		if(produtoController.validaCodBarras(txtCodBarras.getText())){
			if(produtoController.validaDescricao(txtDescricaoProduto.getText())) {
				if (produtoController.validaFornecedor(txtFornPrincipal.getText())) {
					if (		produtoController.validaDiasEntrega(txtDiasEstEntrega.getText())) {
						produto.setCodBarras(Long.parseLong(txtCodBarras.getText()));
						produto.setDescricaoProduto(txtDescricaoProduto.getText());
						produto.setFornecedorPrincipalProduto(txtFornPrincipal.getText());
						produto.setDiasEstimadosEntregaProduto(Integer.parseInt(txtDiasEstEntrega.getText()));
						produto.setUnidProduto((UnidadeProduto) cbUnidadeProduto.getSelectedItem());
					}
				}
			}
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
	return produto;

Método cadastrar:

protected void cadastrar(Produto produto) {
	produtoController.cadastrar(produto);
}

Listener que executa:

        public void actionPerformed(ActionEvent arg0) {
	   try {
		cadastrar(montaObjeto());
	   } catch (Exception e) {
		e.printStackTrace();
           }
		JOptionPane.showMessageDialog(null, "Cadastrado com sucesso!");
	}

Um dos métodos de tratamento de campos. Demais seguem o mesmo padrão:

public boolean validaDescricao(String descricao) {
	boolean result = true;
	if (descricao.equals(null) || descricao.equals("")) {
		result = false;
		JOptionPane.showMessageDialog(null, "Preencha o campo DESCRIÇÃO PRODUTO!");
	} 
	return result;

Você pode criar um único método para validar todos os campos obrigatório, não precisa fazer um a um!

Exemplo:

public boolean validaCamposObrigatorios() {
	if (meucampo.getText().isEmpty()) {
		JOptionPane.showMessageDialog(null, "Preencha o campo Meu Campo!");
                meucampo.grabFocus();
                return false;
	} 
        if (meuoutrocampo.getText().isEmpty()) {
		JOptionPane.showMessageDialog(null, "Preencha o campo Meu Outro Campo!");
                meuoutrocampo.grabFocus();
                return false;
	} 
        if (meucampodiferente.getText().isEmpty()) {
		JOptionPane.showMessageDialog(null, "Preencha o campo Meu Campo Diferente!");
                meucampodiferente.grabFocus();
                return false;
	}
        return true;
}

percebe que consigo validar todos os campos dentro de um único método ?
Sendo assim no momento de persistir o registro bastaria fazer da seguinte maneira:

protected void cadastrar(Produto produto) {
        if (validaCamposObrigatorios()) {
	    produtoController.cadastrar(produto);
        }
}

Bom dia @Jonathan_Medeiros.

Concordo que seu método é melhor, Ok.
Mas o meu problema é parar a execução quando encontrar um erro.
Não está parando, entende?

Você testou o método do Jonathan?
O seu método ele valida todos os campos e só então da um return no final, o correto é deixar o return dentro de um if.
Se o primeiro if for executado, vai aparecer o JOptionPane e depois vai retornar, assim não irá verificar os outros campos.
Quando o return é executado, o método se encerra

Justamente por isso eu montei este código e te mandei, é exatamente isso que ele faz!
Você pelo menos testou antes de dar o feedback ?

Se “descricao” for null, como você irá chamar um método (no caso o método “equals()”) nele? Isso dará NullPointerException não é? Você poderia fazer assim:

public boolean validarDescricao(String descricao) {
	if (descricao == null || descricao.isEmpty()) {
		JOptionPane.showMessageDialog(null, "Preencha o campo DESCRIÇÃO PRODUTO!");
		return false;
	} 
	return true;
}
public boolean validaCamposObrigatorios() {
	if (meucampo.getText().isEmpty()) {
		JOptionPane.showMessageDialog(null, "Preencha o campo Meu Campo!");
                meucampo.grabFocus();
                return false;
	} 
        if (meuoutrocampo.getText().isEmpty()) {
		JOptionPane.showMessageDialog(null, "Preencha o campo Meu Outro Campo!");
                meuoutrocampo.grabFocus();
                return false;
	} 
        if (meucampodiferente.getText().isEmpty()) {
		JOptionPane.showMessageDialog(null, "Preencha o campo Meu Campo Diferente!");
                meucampodiferente.grabFocus();
                return false;
	}
        return true;
}

Acho que o código acima poderia ficar melhor assim:

public boolean validarCamposObrigatorios() {
	for (JTextComponent campo : listaDeCamposObrigatorios) {
	    	if (campo.getText().isEmpty()) {
		    	JOptionPane.showMessageDialog(null, "Preencha o campo '"+campo.getName()+"'!");
                campo.grabFocus();
                return false;
	    	}
	}
	return true;
}

Entendo.
Vou testar o método e retorno.
Mas vejo o problema no return do objeto.

O return das validações não está resultando em nada.
O que está obrigando o programa a continuar executando é o return:

return produto;

Pois não consigo coloca-lo dentro da validação, uma vez que o método tem que retornar de qualquer jeito.

Acho que vou dividir o método entre validarCampos e montarObjeto.
Assim só monto o objeto se os campos tiverem a validação true.

Justamente, está seguindo o caminho certo!

Obrigado pela atenção meus caros!