Note that the delayed goal is added using freeze/2
and therefore the stepwise instantiation of Ball does not
work, e.g.
exception(file_error, error(Formal,_))
immediately fails.
Error types may be defined or extended (e.g., by libraries) by adding clauses to the multifile predicates error_term/2 and exception_term/2. Modules may (re-)define local error types using the exception_type/2 directive.