2

如何在 MIT 方案中引发和处理异常?

像[它不起作用]这样的东西

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

2 回答 2

3

文档确实提供了答案,但没有代码示例,所以这里是一个:

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

在这里,我们只是显示错误(文档称为“条件”)并且什么都不做。

要让此函数处理所有条件,请执行以下操作:

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

或者你可以只用以下代码包装一个代码块:

(bind-condition-handler '() handler (3 4))
于 2013-08-09T03:32:30.537 回答
0

正如 dvingo 指出的那样,文档没有显示任何示例,因此这里是另一个使用“错误”内置特殊形式的示例(至少在 MIT 方案中):

(define (errors-if-zero x)
  (if (= x 0)
    (error "x is 0")
    x))
于 2015-03-25T05:01:17.147 回答