You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Chez-Scheme调试模式下能否获取当前raise continuation?

在Chez Scheme的调试模式下可以直接获取当前的raise continuation,具体操作方式如下:

操作方法

1. 调试模式内直接获取

进入debug>提示符后,按以下步骤操作:

  • 输入e进入当前上下文的求值环境,此时环境中内置的*exception-continuation*变量就是当前的raise continuation对象
  • 直接执行(inspect *exception-continuation*)就能进入你之前敲i得到的continuation检查界面,也可以把它赋值给自定义变量持久保存

示例操作(承接你之前的调试流程):

#<continuation in fn2>                                            : e
> (inspect *exception-continuation*)
#<continuation in fn2>                                            : sf
  0: #<continuation in fn2>
  1: #<continuation in fn1>
  2: #<system continuation in new-cafe>
# 效果和你之前手动敲i检查完全一致
> (define my-cont *exception-continuation*)
> (procedure? my-cont)
#t

2. 预先捕获raise continuation(可选)

如果你不想每次报错后手动进调试器取,也可以在运行目标代码前包裹异常处理器,提前捕获raise continuation:

(define saved-raise-cont #f)
;; 运行目标代码,自动捕获raise continuation
(with-exception-handler
  (lambda (exn)
    ;; 捕获raise continuation并存到变量
    (call/cc (lambda (k) (set! saved-raise-cont k)))
    ;; 继续抛出异常,不影响原有报错流程
    (raise exn))
  (lambda () (fn1 100)))

运行后saved-raise-cont就存储了报错时的raise continuation,你可以随时用(inspect saved-raise-cont)检查。

内容的提问来源于stack exchange,提问作者chansey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:54:01