Major Section: ACL2-BUILT-INS
(Hard-error ctx str alist)
causes evaluation to halt with a short
message using the ``context'' ctx
. An error message is first printed
using the string str
and alist alist
that are of the same kind
as expected by fmt
. See fmt. Also see er for a macro that provides a
unified way of signaling errors.
Hard-error
has a guard of t
. Also see illegal for a
similar capability which however has a guard of nil
that supports
static checking using guard
verification, rather than using dynamic
(run-time) checking. This distinction is illustrated elsewhere:
see prog2$ for examples.
Semantically, hard-error
ignores its arguments and always returns
nil
. But if a call (hard-error ctx str alist)
is encountered
during evaluation, then the string str
is printed using the
association list alist
(as in fmt
), after which evaluation halts
immediately. Here is a trivial, contrived example.
ACL2 !>(cons 3 (hard-error 'my-context "Printing 4: ~n0" (list (cons #\0 4)))) HARD ACL2 ERROR in MY-CONTEXT: Printing 4: four ACL2 Error in TOP-LEVEL: Evaluation aborted. ACL2 !>