обработка исключений в схеме MIT - PullRequest
2 голосов
/ 11 февраля 2011

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

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

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

Ответы [ 3 ]

3 голосов
/ 11 февраля 2011

Лучшее место для поиска - документация схемы MIT / GNU по обработке ошибок .

2 голосов
/ 09 августа 2013

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

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

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

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

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

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

(bind-condition-handler '() handler (3 4))
0 голосов
/ 25 марта 2015

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

(define (errors-if-zero x)
  (if (= x 0)
    (error "x is 0")
    x))
...