gpt4 book ai didi

exception - AllegroServe 异常处理

转载 作者:太空宇宙 更新时间:2023-11-03 18:40:20 24 4
gpt4 key购买 nike

作为参数传递给函数时如何避免出错 do-http-request一个无效的主机。
有什么方法可以像 Java 的异常处理机制一样捕获错误?

最佳答案

当然,CL 有一个非常好的条件系统。一个简单的选择是将对 do-http-request 的调用包装在 ignore-errors 中。 ,如果在包装代码中发出错误条件信号,则返回 nil(以及作为第二个值的条件)。之后您可以检查 nil

如果你想要更像 Java 中的异常处理的东西,只需使用 handler-case并添加一个适当的错误子句(我没有安装 AllegroServe,但我想你会得到一个 socket-error 因为提供了错误的 URL——如果我误读了就改变那部分):

(handler-case
(do-http-request …)
(socket-error ()
…))

如果您需要类似 finally 的功能,请使用 unwind-protect :

(unwind-protect
(handler-case
(do-http-request …)
(socket-error (condition) ; bind the signalled condition
…) ; code to run when a socket-error was signalled
(:no-error (value) ; bind the returned value
…)) ; code to run when no condition was signalled
…) ; cleanup code (finally)

你甚至可以变得更花哨,例如使用 handler-bind通过在堆栈下方某处调用重新启动来向上处理条件堆栈,而不展开它。例如,如果 do-http-request 提供重新启动以使用另一个 URL 重试,您可以通过使用新 URL 调用重新启动来重试来处理错误情况。我只是为了完整起见才提到这一点——这对您的用例来说太过分了,但能够轻松地恢复(可能是昂贵的)计算可能是一个相当方便的功能。

关于exception - AllegroServe 异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11730424/

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