Ciao a tutti, sto scrivendo un'applicazione che data una lista di Prodotti caratterizzati da nome, prezzo e codice identificativo, permette all'utente di inserire un codice id da tastiera e restituire il nome del prodotto. Se il codice non viene trovato nella lista allora si alza un eccezione con relativo messaggio di errore. Il problema è che l'eccezione non viene alzata e continua a restituirmi l'ultimo prodotto trovato nella lista dall'iteratore. Vi allego il codice del main:

codice:
    do{
        try{
            System.out.println("Inserire codice Id del Prodotto: ");
            String code = scanner.next();
            prodotto = GestioneProducts.prodottoPerId(code);
            esito = true;
            }
        catch(IllegalArgumentException e){
              System.out.println(e.getMessage());
        }
    }while(!esito);
       System.out.println(prodotto.getNome());
e del metodo di ricerca:

codice:
    public static Product prodottoPerId(String id) throws IllegalArgumentException{
        boolean trovato = false;
        Product prodotto = null;
        Iterator<Product> iter = list.iterator();
        while(iter.hasNext()){
            prodotto = iter.next();
            if(prodotto.getId().equals(id)) trovato = true;
        }
        if(trovato = false){ throw new IllegalArgumentException("Errore: prodotto non trovato");}
        return prodotto;
Qualcuno può aiutarmi?