【问题标题】:exception handling in MIT schemeMIT 方案中的异常处理
【发布时间】:2011-02-11 11:36:20
【问题描述】:

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

类似[它不起作用]

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

【问题讨论】:

    标签: exception-handling scheme mit-scheme


    【解决方案1】:

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

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

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

    要让这个函数处理所有条件:

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

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

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

    【讨论】:

    • dkinzer,代码故意出错,所以会处理异常。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 2020-06-26
      相关资源
      最近更新 更多