Pau*_*han 4 lisp exception common-lisp conditional-statements
由于Drakma + CLISP中的错误,CLISP上的HTTP库Drakma生成错误USOCKET:UNSUPPORTED.但是,事实证明CONTINUE重启似乎工作正常.因此,我花了一些时间与CLtL和其他引用尝试确定如何编写重启处理程序.
(defun http-request (url param)
(handler-bind ((USOCKET:UNSUPPORTED
#'(lambda (x)
(invoke-restart 'continue)))))
(drakma:http-request url
:method :post
:parameters
param))
Run Code Online (Sandbox Code Playgroud)
根据我的最佳理解,上面的代码应该捕获错误USOCKET:UNSUPPORTED.它没有; 它似乎忽略了错误绑定器.
我该如何解决?
好吧,我不确定我是否可以在这里帮助你,但是:你的parens完全搞砸了.试试这样:
(defun http-request (url param)
(handler-bind ((usocket:unsupported #'continue))
(drakma:http-request url :method :post :parameters param)))
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,请尝试检查您是否真正处理了正确的条件,以及您期望的重启是否真的可用:
(defun http-request (url param)
(handler-bind ((condition (lambda (c)
(print c)
(print (compute-restarts)))))
(drakma:http-request url :method :post :parameters param)))
Run Code Online (Sandbox Code Playgroud)
或者,你可以看看 IGNORE-ERRORS