It is a bad practice to ``++throw++`` something that's not derived at some level from ``++Error++``. If you can't find an existing ``++Error++`` type that suitably conveys what you need to convey, then you should extend ``++Error++`` to create one.
Specifically, part of the point of throwing \``++Error++``s is to communicate about the conditions of the error, but literals have far less ability to communicate meaningfully than \``++Error++``s because they don't include stacktraces.