Consider the following definitions:
(define (foo x)
(if (not (symbol? x))
(error "not a symbol"))
(cons x x))
(define (bar y)
(handler-case
(foo y)
((<condition>)
y)))The bar procedure calls foo procedure in a context in which errors are caught. If foo signals a condition (as it will if its argument is not a symbol), then bar catches the condition and returns bar's argument instead of whatever foo returns.