gpt4 book ai didi

haskell - 如何发现 Haskell 中会抛出哪些异常?

转载 作者:行者123 更新时间:2023-12-02 15:30:37 25 4
gpt4 key购买 nike

使用wreq时最近,我编写了可以编译并运行了一段时间的代码。然后,抛出了HttpExceptionwreq 中未定义 HttpException。我必须追踪到 http-client。然后,过了一会儿,又抛出了 JSONError 。这也不是在 wreq 中定义的,而是在 aeson 中定义的。

除了阅读该库的所有可用文档以及可能的所有依赖库,希望作者提到过它之外,如何找出黑盒库可能引发的异常?

最佳答案

Haskell 中无法确定函数可能抛出哪些运行时异常。

如果您来自具有“已检查”和“未检查”异常的 Java,那么您应该考虑所有 Haskell 运行时异常都是未检查的。 Haskell 中检查异常的等价物通常是使用 MaybeEitherExceptT 或类似的东西将它们合并到结果类型中,如中所述评论。

对于适当使用未经检查的运行时异常与这些其他机制有不同的看法,并且库作者将对错误处理做出不同的决定,因此您有点受他们的摆布。

在这种情况下,wreq 的文档非常清楚地表明可以抛出 HttpExceptionJSONError,但不能保证该库或任何其他库的文档是正确/完整的,或者依赖库不会引发未列出的其他异常。 (注意:JSONError 实际上是在 wreq 中定义的。aeson 包不使用异常来表示 JSON 解码错误。)

在生产代码中,您需要确保有适当的“所有异常”处理程序。

关于haskell - 如何发现 Haskell 中会抛出哪些异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56275990/

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