The ISO exception term carries no information (it is just an atom) and thus is relatively useless (why would one throw an exception carrying no information?)
As such, the toplevel prints nothing revealing:
?- instantiation_error("Argument 2 and 3 are uninstantiated"). ERROR: Arguments are not sufficiently instantiated ERROR: In: ERROR:  throw(error(instantiation_error,_8540)) ERROR:  toplevel_call(user:user: ...) at /usr/local/logic/swipl/lib/swipl/boot/toplevel.pl:1115
One thus cannot make the difference between "error due to term being fully instantiated" and (for example) "error due to term being partially instantiated but nonground", although that information might be of interest to someone. SAD!