The system exceptions ExError,
ExHalt, and
ExUserBreak use the first argument for the error string when opening a debugger. If you create a child of these exceptions, you must follow the same convention. Alternatively, you can provide a
defaultHandler in the child, which sends
error: with an appropriate error message. The
defaultHandler for the system exceptions uses the description of the exception as the error string if the first argument is not a string. If you are using exceptions to return non-string values in the arguments of the signal (a reasonable use) then you should provide a default handler for your exceptions that knows that the arguments will not be strings. For example: