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):
*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.
*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.