VariablePackage: exclToCDocOverviewCGDocRelNotesFAQIndexPermutedIndex
Allegro CL version 10.0
Unrevised from 9.0 to 10.0.
9.0 version


This variable controls how to handle errors which occur during printing. When this variable is true, errors in printing cause informative output to be printed, but do not cause the debugger to be invoked.

Printing follows all of the rules of condition-system handling. If an 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).

Users typically do not 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 the printing of an enclosed object that describes the problem. The description includes information about the condition signaled. For example,

user(1): (format nil "~{abc~:}")
"#<Printer Error, obj=#x30000bc5: Insufficient format args>"

It is probably desirable to have *enclose-printer-errors* bound to true when printing objects to display windows as errors may cause the system to appear to hang (since the error will be signaled in the listener or the console, which may not be visible).

*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, the value of this variable can be set to nil.

Copyright (c) 1998-2019, Franz Inc. Oakland, CA., USA. All rights reserved.
This page was not revised from the 9.0 page.
Created 2015.5.21.

Allegro CL version 10.0
Unrevised from 9.0 to 10.0.
9.0 version