【发布时间】:2011-02-11 11:36:20
【问题描述】:
如何在 MIT 方案中引发和处理异常?
类似[它不起作用]
((< val 0) (raise "-ve value") )
【问题讨论】:
标签: exception-handling scheme mit-scheme
如何在 MIT 方案中引发和处理异常?
类似[它不起作用]
((< val 0) (raise "-ve value") )
【问题讨论】:
标签: exception-handling scheme mit-scheme
文档确实提供了答案,但没有代码示例,所以这里是一个:
(define (handler x)
(display "Handling Error: ")(display x)(newline)
(restart 1))
这里我们只是显示错误(文档称之为“条件”) 什么都不做。
要让这个函数处理所有条件:
(bind-default-condition-handler '() handler)
或者你可以只用以下代码包装一个代码块:
(bind-condition-handler '() handler (3 4))
【讨论】:
正如 dvingo 指出的那样,文档没有显示任何示例,因此这里是另一个使用“错误”内置特殊形式的示例(至少在 MIT 方案中):
(define (errors-if-zero x)
(if (= x 0)
(error "x is 0")
x))
【讨论】: