.NET definisce InvalidOperationException
come
The exception that is thrown when a method call is invalid for the object's current state.
In una progettazione software ottimale, avrebbe mai senso lanciare questa eccezione? Direi che l'API 'ottimale' impedisce qualsiasi uso improprio, incluso, non permettendo mai che un metodo venga chiamato quando il suo stato non è valido.