Vedila semplicemente in questo modo (come in java):
Usa le eccezioni e non le requires quando l' "errore" è abbastanza grave.
In fondo l'uso delle eccezioni al posto di qualunque requires non è mai tecnicamente sbagliato: ovvero...la specifica funziona lo stesso.

Ancora conviene usare eccezioni quando il verificarsi della condizione della ensures esclude il verificarsi della condizione della exception (in my opinion)