Bug jtable

Gente criei essa conta só pra ver se vocês podem me ajudar em um bug sinistro que aconteceu cmg, estou com um congelamento ao EXCLUIR um item ESPECÍFICO da minha JTABLE que NÃO consta mais no meu banco de dados o item MAÇAZINHA ao clicar em excluir ou editar minha janela de aplicação windows trava/congela e não é possivél fechar. Outros produtos da tabela são facilmente excluidos e/ou alterados, porém esse item não sai e não edita
foto-tab-posclick

A foto da postagem é quando eu clico para excluir ou editar esse item (17 MAÇAZINHA) que congela a janela

no meu banco de dados nao se encontra esse indice

Posta o código onde a ação de excluir está sendo executada.

Fotos não ajudam quase nada, posta o seu código.

1 curtida
public void deletar() {
	int id;
	
	Produto p = new Produto(); // CHAMO O PRODUTO DA BEAN
	ProdutoDAO dao = new ProdutoDAO(); // CHAMO O PRODUTO DAO DA DAO
	
	id = (Integer.parseInt(txtid.getText()));
	p.setId(id);
	p.setDescricao(txtdesc.getText());
	p.setQtd(Integer.parseInt(txtqtd.getText()));
	p.setPreco(Double.parseDouble(txtpreco.getText()));
	
	// tableModel.addRow(p);
	try {
		dao.deletar(p);
		limpar();
	} finally {
		lerTabela();
	}
}

esse é o método que eu fiz para a ação de excluir, ele é funcional e consigo excluir outros itens da tabela menos o MAÇAZINHA

JButton btnExcluir = new JButton("Excluir");
btnExcluir.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent e) {
		deletar();
		int linhaSelecionada = table.getSelectedRow();
		
		if (linhaSelecionada != -1) {
			JOptionPane.showMessageDialog(null, "Nenhum Produto selecionado");
		} else {
			JOptionPane.showMessageDialog(null, "Produto excluido");
			lerTabela();
		}
	}
});
	
btnExcluir.setBounds(429, 180, 146, 25);
frame.getContentPane().add(btnExcluir);

esse é o codigo do botão

public List ler() {
// CRIA UMA LISTA DE COLABORADORES

	List<Produto> lista = new ArrayList<>();

	try {
		conexao = retornaConexao.obterconexao();
		stmt = conexao.prepareStatement("SELECT * FROM MERCADINHO");
		//GUARDA OS RESULTADOS DO EXCECUTEQUEERY NA VARIAVEL RS
		rs = stmt.executeQuery();

		// PERCORRE TODOS OS REGISTROS ENCONTRADOS
		while (rs.next()) {
			
			Produto produto = new Produto();
			
			produto.setId(rs.getInt("ID"));
			produto.setDescricao(rs.getString("DESCRICAO"));
			produto.setQtd(rs.getInt("QTD"));
			produto.setPreco(rs.getDouble("PRECO"));

lista.add(produto);
}
} catch (SQLException erro) {
JOptionPane.showMessageDialog(null, “ProdutoDAO listar” + erro);
} finally {
try {
stmt.close();
rs.close();
conexao.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return lista;
}

esse é meu código que percorre a lista

public void carregarCampos() {
int setar = table.getSelectedRow();

	txtid.setText(table.getModel().getValueAt(setar, 0).toString());
	txtdesc.setText(table.getModel().getValueAt(setar, 1).toString());
	txtqtd.setText(table.getModel().getValueAt(setar, 2).toString());
	txtpreco.setText(table.getModel().getValueAt(setar, 3).toString());
}