signal (to destination)? throw catch-name catch-parameter*

signal (to destination)? rethrow


The signal action is used to send a signal to a destination.

The destination, if specified, must be a reference to a sink or a source. If no destination is specified, the signal will be sent to #current-output.

The signal throw action behaves as the action throw, except the throw happens in destination instead of in the current scope. The signal rethrow variant can be used within a catch clause to resend the caught exception to another destination.

All signals sent to #suppress are silently suppressed. Otherwise, if the destination is a non-coroutine sink or source, like #main-input for example, the signal action raises a #program-error.

If destination is a coroutine that cannot catch the exception, the exception propagates to the coroutine's parent. If none of the destination coroutine's ancestors can catch the exception, the signal action raises a #program-error instead.