This variable controls how to handle errors which occur during printing.
Normal printing follows all of the rules of condition-system handling; and if any handled or unhandled condition results in a call to the debugger, a new break level is established, and the user is expected to deal with the low-level printer error (which usually results from a bad print-method or a trashed object).
But normally, a user doesn't want to debug a bad object or print
method, because it is usually part of a larger problem which is either
more important or is the cause of the bad printing. So, when this
variable is true, those errors result in a printing of an enclosed
object that describes the problem. Formerly, the object looked like
#
<
Printer Error
>
, but now, the object is described
including a printing of the condition, for example,
user(1): (format nil "~{abc~:}") "#<Printer Error, obj=#x30000bc5: Insufficient format args>" user(2):
excl:*enclose-printer-errors*
should always be bound
to true whenever objects are being printed, such as in terminal and
window output functions like inspectors, debuggers, etc.
excl:*enclose-printer-errors*
has a default binding of
t
. This is a controversial decision, because it could be
interpreted as a non-conformance to the ANSI condition handling
rules. However, it is set to true by default to protect against
unwanted break-level processing in user code, especially when non
Allegro CL printing tools are used. If this default is not desired, it
can be set to nil
.
The documentation is described in introduction.htm and the index is in index.htm.
Copyright (c) 1998-2000, Franz Inc. Berkeley, CA., USA. All rights reserved.
Created 2000.10.5.