Mensagem de erro não aparece

Bom dia .
Estou criando uma consulta ao banco de dados mysql . É consultado um RA de um determinado aluno. Caso o RA esteja cadastrado , é retornado o nome dele . Caso não esteja , deveria aparecer uma mensagem de erro … mas não aparece .

Código da classe :

// Botão Buscar

    Dados d = new Dados();
    Conectar c = new Conectar();
    

    ResultSet retorno = d.consulta("select ra,nome from paciente where ra = '" + txtRA.getText() + "'" );
       

    try {
        while(retorno.next()) {
          txtNome.setText(retorno.getString("nome"));
          
        }
        
    }catch(SQLException e) {
        
        JOptionPane.showMessageDialog(null,"Pesquisa não realizada. Verifique o RA ");
                
        
    }

Código do método na classe Dados (equivalente a uma classe DAO):

//consulta

public ResultSet consulta(String consulta) {
    
    ResultSet rs = null;
    com.mysql.jdbc.Connection con = Conectar.getConnection();
    
    try {
       PreparedStatement stmt  = (PreparedStatement) con.prepareStatement(consulta);
        rs = stmt.executeQuery();
        
        
                               
    } catch (SQLException e) {
        System.err.println("Erro ao realizar Consulta: " + e);
         
    }
    
    return rs;
    
    
}

ALGUÉM TEM IDÉIA DO QUE POSSA ESTAR OCORRENDO ?

Este código aqui nunca vai retornar erro caso não existe nenhum RA cadastrado.
Você precisa validar se há ou não algum RA e, se não houver, retornar a mensagem de erro.

Eu havia pensado nisso … tentei usar , por exemplo , o if, mas não deu certo ele não consegue fazer a validação usando um resultset …dá erro , ou eu não soube fazer …mas em todas as tentativas , deu erro .

Esse código testa se o select retornou um registro válido ou não:

if (resultset.first()) {
    //Encontrado o R.A pesquisado
} else {
   //R.A não localizado
}

Sim, pois não é o ResultSet que precisa ser validado (o while já faz isso).
Você pode (e, neste caso, deve?) usar uma variável para atribuir o resultado da consulta. Caso essa variável seja nula, lança a exceção.

Eu faria algo assim:

String nome = null;
while(retorno.next()) {
    nome = retorno.getString("nome");
}
if(null == nome) {
    //Lança a exceção "Não existe RA associado ao aluno";
}

Você esta fazendo Select em 2 campos e apenas instanciando o campo Nome.
Porque você não instancia o campo Ra e verifica o que retornou?

Muito obrigado darlan_machado e Jonathan_Medeiros.

Segui o que o Darlan falou e exemplificou e deu certo . Muito obrigado . Problema resolvido.

O código que o Jonathan pediu para eu testar , testei e obtive sucesso testando um RA inexistente ,porém , quando testo um RA Válido ,ele retorna os dados ,porém apresenta erro :
“Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException”

De qualquer modo agradeço aos dois , já que o o meu problema foi sanado.

Boa tarde .Bem observado ,obrigado, porém foi falha minha .Nesse caso precisarei do select apenas no campo ra . obrigado. Deus te abençoe. O problema foi resolvido com a sugestão do Darlan.