Go to the first, previous, next, last section, table of contents.


]cerror

Function: ]cerror { [event] -> }
file: 01-C-event.t
package: muf
status: alpha

This function is the standard way for the MUF application programmer to signal detection of a continuable error.

The argument should be a valid event block, containing at minimum a event, and normally also a :formatString describing the problem:

[   :event    .err.simpleError
    :formatString "The snarkle got frobulated."
|

The ]cerror function first establishes a continue restart, then ]signals the event, then if ]signal returns (indicating no handler resolved the problem) either invokes the debugger or else prints an error message and aborts, depending whether @$s.breakEnable is nil.

The ]cerror function is currently implemented as:

: ]cerror { [] -> ! }

    ( Establish a 'cont tag that returns to caller: )
    withTag cont do{

        ( Establish a 'continue restart jumping to 'cont: )
        [   :function :: { -> ! } 'cont goto ;
            :name     'continue
            :reportFunction "Continue from ]cerror call."
        | ]withRestartDo{

            ( Issue the requested signal: )
            |dup[ ]signal

            ( Handlers didn't resolve event: )
            @$s.breakEnable if
                ]invokeDebugger
            else
                @$s.errorOutput ]reportEvent
                nil abort
            fi
        }
        cont
        ]pop
    }
;

A convenience function cerror is also provided for cases when specifying a string is sufficient: It is currently implemented as

: cerror { $ -> } -> formatString

    [   :event .err.simpleError
	:formatString formatString
    | ]cerror
;

See section ]error. See section ]warn.


Go to the first, previous, next, last section, table of contents.