如何捕捉eval失败的球拍?

时间:2012-09-07 03:46:40

标签: scheme racket

文档说eval返回any ...我有一个案例需要知道eval是否失败。如何测试?

1 个答案:

答案 0 :(得分:3)

就像@leppie说的那样,你就像往常一样。这是一个例子:

(define (eval* expr)
  (with-handlers ([exn? (λ (e) `(fail ,(exn-message e)))])
    `(success ,(eval expr))))

另请参阅sandbox library以获得更多对评估的控制权,并且(一如既往)要注意使用eval时附带的usual subtelties