Scheme 清除未捕获的异常
我有一个用Scheme 清除未捕获的异常,scheme,racket,Scheme,Racket,我有一个用Racket编写的软件,我想在其中使用一个非常简单的异常处理程序:当抛出异常时,处理程序打印一条消息,应用程序终止 我可以复制以下玩具示例中的行为: (define (body) (begin (displayln "First line") (error "Some error") (displayln "This line is not printed"))) (call-with-exception-handler (lambda (x) (dis
Racket
编写的软件,我想在其中使用一个非常简单的异常处理程序:当抛出异常时,处理程序打印一条消息,应用程序终止
我可以复制以下玩具示例中的行为:
(define (body)
(begin
(displayln "First line")
(error "Some error")
(displayln "This line is not printed")))
(call-with-exception-handler (lambda (x) (displayln "Exception handler")) body)
此代码的输出为:
First line
Exception handler
uncaught exception: #<void>
第一行
异常处理程序
未捕获异常:#
我希望它在异常处理程序中的displayln
表达式(即打印“异常处理程序”
的表达式)之后退出。我该怎么做呢?试试这个:
(with-handlers ([exn:fail? (lambda (exn)
; in case you need the error message
(displayln (exn-message exn))
(displayln "Exception handler"))])
(displayln "First line")
(error "Some error")
(displayln "This line is not printed"))
它将打印:
First line
Some error
Exception handler
试试这个:
(with-handlers ([exn:fail? (lambda (exn)
; in case you need the error message
(displayln (exn-message exn))
(displayln "Exception handler"))])
(displayln "First line")
(error "Some error")
(displayln "This line is not printed"))
它将打印:
First line
Some error
Exception handler
在哪个
displayln
expression之后?你有两个谢谢你的留言。我编辑了问题,然后displayln
expression?你有两个谢谢你的留言。我编辑了这个问题