gpt4 book ai didi

error-handling - 捕获但继续 Common Lisp 中的警告

转载 作者:行者123 更新时间:2023-12-01 08:29:35 24 4
gpt4 key购买 nike

有没有办法收集警告,但仍然执行它们相关的代码?

我的第一个想法是使用 handler-case 来获取所有条件并从警告中继续,但是 SBCL 中的 SimpleWarning 似乎没有 continue重启。

CL-USER> (handler-case (warn "Nope") (t (c) c))
#<SIMPLE-WARNING "Nope" {1008080D53}>
CL-USER> (compute-restarts (handler-case (warn "Nope") (t (c) c)))
(#<RESTART SWANK::RETRY {10080867F3}> #<RESTART ABORT {1004710323}>
#<RESTART ABORT {1004710073}>)
CL-USER>

最佳答案

您需要查看 WARN 的实际作用。默认情况下,它会打印一条警告。如果您想访问条件对象,则需要编写一个处理程序。刚刚从处理程序返回已经继续。如果您想摆脱打印的警告,请在处理程序中调用 MUFFLE-WARNINGMUFFLE-WARNing 使用同名重启。

CL-USER 32 > (let ((conditions ))
(handler-bind ((t (lambda (c) (push c conditions))))
(warn "foo")
(warn "bar")
(format t "~%baz"))
conditions)
Warning: foo
Warning: bar
baz
(#<SIMPLE-WARNING 402011C9B3> #<SIMPLE-WARNING 402011C63B>)

关于error-handling - 捕获但继续 Common Lisp 中的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22890221/

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