Erro ao salvar registro após verificar que ele não existe

Estou tentado salvar um registro depois que verifico se ele existe. qd ele não existe vou tentar salvar da o erro
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException: Cannot invoke “pdv.modal.Cliente.setName(String)” because “this.cli” is null o que devo fazer pra salvar apos a pesquisa?

esse é meu metodo que salva e o botao que salva

btnCadastrar = new JButton("Cadastrar");
		btnCadastrar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				try {
					cli = dados.buscarPhone(txtPesquisar.getText());

					if (cli == null) {
						salvar();
					} else {
						update();
					}
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		});

protected void salvar() throws SQLException {

		cli.setName(txtNome.getText());
		cli.setLast_name(txtSobrenome.getText());
		cli.setPhone_number(txtPhone.getText());

		if (radio_yes.isSelected()) {
			ativo = true;
			cli.setIs_wtatsapp(ativo);
//				System.out.println("Ativo: " + ativo);
		} else {
			ativo = false;
			cli.setIs_wtatsapp(ativo);
//				System.out.println("Ativo: " + ativo);
		}
		dados.save(cli);

	}

protected void buscarPhone() throws SQLException {
		cli = dados.buscarPhone(txtPesquisar.getText());
		if (cli != null) {
			txtNome.setEditable(true);
			txtSobrenome.setEditable(true);
			txtPhone.setEditable(true);

			btnCadastrar.setEnabled(true);
			btnExcluir.setEnabled(true);
			btnCancelar.setEnabled(true);
			lbl_pesquisa.setText("");

			txtID.setText(String.valueOf(cli.getId()));
			txtNome.setText(cli.getName());
			txtSobrenome.setText(cli.getLast_name());
			txtPhone.setText(cli.getPhone_number());
			isWhatsap = cli.isIs_wtatsapp();
			if (txtNome.getText().equals("")) {
				lbl_nome.setText("* campo obrigatório");
			}

			if (isWhatsap) {
				radio_yes.setSelected(true);
				radio_no.setSelected(false);
			} else {
				radio_no.setSelected(true);
				radio_yes.setSelected(false);
			}

			btnCadastrar.setText("Alterar");

		} else {
                      //Quando entra aqui acontece o erro
                     //Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "pdv.modal.Cliente.setName(String)" because "this.cli" is null
	
			txtNome.setEditable(true);
			txtSobrenome.setEditable(true);
			txtPhone.setEditable(true);

			txtID.setText("");
			txtNome.setText("");
			txtSobrenome.setText("");
			txtPhone.setText("");
			
			btnCadastrar.setText("Cadastrar");
			btnCadastrar.setEnabled(true);
			btnCancelar.setEnabled(true);
			btnExcluir.setEnabled(false);
			
			
			System.out.println("dados nao encontrado");

			String phone = txtPesquisar.getText();
			txtPhone.setText(phone);

		}

	}

A exceção não está acontecendo neste else
Posta o StackTrace completo

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "pdv.modal.Cliente.setName(String)" because "this.cli" is null
	at pdv.CadastroCliente.salvar(CadastroCliente.java:238)
	at pdv.CadastroCliente$5.actionPerformed(CadastroCliente.java:186)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
	at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
	at java.desktop/java.awt.Component.processEvent(Component.java:6391)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
///No else eu ja tentei pegar assim os dados mais tb da erro

                        txtNome.setText(cli.getName());
			txtSobrenome.setText(cli.getLast_name());
			txtPhone.setText(cli.getPhone_number());
                        dados.salvar();

Qual é a linha 238 do ficheiro?

O StackTrace está bastante claro, seu erro NÃO é no método buscarPhone, seu erro está no método salvar da classe CadastroCliente, na linha 238.

Capturar

Só invocas o método salvar() se cli for null. No entanto, logo na primeira instrução dentro de salvar() invocas um método de cli - que é null e vai lançar a NullPointerException.

Provavelmente neste caso falta-te uma ima instrução que cria um novo cliente no inicio do método salvar.
cli = new Cliente().

Captura de tela 2023-05-26 113848

Deu certo amigo Obrigado.