gpt4 book ai didi

error-handling - 如何在方案中实现try-catch block ?

转载 作者:行者123 更新时间:2023-12-04 05:13:10 24 4
gpt4 key购买 nike

我正在尝试使用(call-cc)方法在方案中实现try-catch块,但我不确定如何将其用于此。我找不到任何例子。

找到的示例仅包含错误处理,但是我想做的是:如果发生错误,则方案程序必须向用户提供消息(通过显示示例),而无需暂停程序。

那可能吗?

最佳答案

由于您想捕获所有错误,例如raiseraise-continuable引发的错误,因此,您既需要异常处理程序(以处理升高的条件),又需要退出继续(以避免继续try主体)。 try的简单语法为:

(import (rnrs base)            ; define-syntax
(rnrs exceptions)) ; get `with-exception-handler`

(define-syntax try
(syntax-rules (catch)
((_ body (catch catcher))
(call-with-current-continuation
(lambda (exit)
(with-exception-handler
(lambda (condition)
catcher
(exit condition))
(lambda () body)))))))

例如,将其用作:
> (try (begin (display "one\n")
(raise 'some-error)
(display "two\n"))
(catch (display "error\n")))
one
error
some-error # the return value.

注意:这是R6RS(和R7RS)方案。

关于error-handling - 如何在方案中实现try-catch block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16493079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com