Обработка исключений в схеме MIT

Как мне вызвать и обработать исключение в схеме MIT?

Что-то вроде [это не работает]

((< val 0) (raise "-ve value") )

3 ответа

Решение

В документации есть ответ, но нет примеров кода, поэтому вот один из них:

(define (handler x)
    (display "Handling Error: ")(display x)(newline)
    (restart 1))

Здесь мы просто отображаем ошибку (что в документации называется "условием") и ничего не делаем.

Чтобы эта функция обрабатывала все условия, выполните:

(bind-default-condition-handler '() handler)

Или вы можете просто обернуть один блок кода:

(bind-condition-handler '() handler (3 4))

Как указал dvingo, документы не показывают никакого примера, поэтому вот еще один пример, который использует встроенную специальную форму "error" (по крайней мере, в MIT-схеме):

(define (errors-if-zero x)
  (if (= x 0)
    (error "x is 0")
    x))
Другие вопросы по тегам