*enclose-printer-errors*

Variable

Package: excl

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.