It is silently dropped
The message is silently dropped. Exchanges do not store messages, so the broker discards a message that matches no queue.
So "The broker keeps it in the exchange until a matching queue is bound" is wrong. "The publish call throws an error in the client" is also wrong. A plain publish never throws for this, because publishing is asynchronous.
To detect unroutable messages:
• Publish with the mandatory flag. The broker then returns the message to the publisher.
• Or configure an alternate exchange. It catches messages that no queue matches.
Read more