gpt4 book ai didi

error-handling - 启动预先存在的重启的最快、最简单的方法是什么?

转载 作者:行者123 更新时间:2023-12-02 07:03:56 25 4
gpt4 key购买 nike

好的,我需要重写这个问题。

如果我去:

CL-USER> whatever

我在调试器框架中得到了这个:

The variable WHATEVER is unbound.
[Condition of type UNBOUND-VARIABLE]

Restarts:
0: [RETRY] Retry SLIME REPL evaluation request.
1: [*ABORT] Return to SLIME's top level.
2: [TERMINATE-THREAD] Terminate this thread (#<THREAD "repl-thread" RUNNING {C0C6CF9}>)
...

因此,我应该能够做到这一点:

(handler-case
whatever
(unbound-variable (e) (invoke-restart 'retry)))

然而它产生:

No restart RETRY is active.
[Condition of type SB-INT:SIMPLE-CONTROL-ERROR]
...

我错过了什么?

ABORT 重试工作正常;感谢 hans 和 Svante 指出这一点。其他 - 重试、终止线程等 - 都出错了。

我也试过在调试器中按 e 并直接运行 INVOKE-RESTART。结果相同,但有一个异常(exception):this answer 中的低级示例像我认为的那样工作:

Eval in frame (COMMON-LISP-USER)> (invoke-restart 'go-on)

毫无怨言地返回提示。只有在重新启动菜单中手动选择时,高级示例才会正确重新启动。

最佳答案

输出中 restart 1 前面的星号表示此重启将由 SLIME 的 [q]uit 命令调用。重新启动的名称是“ABORT”,因此要调用它,请使用:

(handler-case
whatever
(unbound-variable (e) (invoke-restart 'abort)))

关于error-handling - 启动预先存在的重启的最快、最简单的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15491113/

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