由于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))
根据我的最佳理解,上面的代码应该捕获错误USOCKET:UNSUPPORTED。它没有;它似乎忽略了错误绑定器。
我该如何解决这个问题?
答案 0 :(得分:5)
嗯,我不确定我是否可以在这里帮助你,但是:你的parens完全搞砸了。试试这样:
(defun http-request (url param)
(handler-bind ((usocket:unsupported #'continue))
(drakma:http-request url :method :post :parameters param)))
如果这不起作用,请尝试检查您是否真的处理了正确的条件,以及您期望的重启是否真的可用:
(defun http-request (url param)
(handler-bind ((condition (lambda (c)
(print c)
(print (compute-restarts)))))
(drakma:http-request url :method :post :parameters param)))
或者,您可以查看IGNORE-ERRORS