If an error occurs during the evaluation of U, the value of number from the associated error call is returned as the value of the errset. There are actually a couple of exceptions. If a continuable error is continued by the user in the interactive break loop, no special return to errset is done. Also if the user requests the computation to be aborted completely back to the top level no return to errset is done.
The boolean argument is evaluated without protection of the error handler. The fluid variable *EMSGP is bound to the boolean value for the evaluation of the form. If the value of *EMSGP is nil when an error occurs no error message is printed and no interactive break loop occurs. In this case control must return to the innermost error handler except for the case of a fatal error.
If errset is returned to in the normal way, its value is a list of one element, the value of the form. If errset is returned to via the error mechanism, its value is the error number of the error call that caused the return.
In most respects errorset behaves the same as errset. See the documentation of errset above. Note that errorset is an expr, so U gets evaluated once as the parameter is passed and the result is then evaluated inside errorset. Since errorset itself calls eval on its first argument there are likely to be problems with compiled code that uses errorset.
In addition to binding *EMSGP as errset does, errorset overrides the behavior usually specified by the *BACKTRACE switch. The backtrace behavior of PSL errors during the execution of a form inside an errorset error handler is determined by the second parameter to the errorset.
The following two switches and one global variable are used by the functions in this section. Useage of any of these can be considered advanced.