gpt4 book ai didi

scala - 确定 Scala 函数抛出的所有可能的异常

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

确定 Scala 中特定库函数可能引发的所有异常以便客户端代码决定是否处理异常的最佳方法是什么?

Scala 没有检查异常这一事实很方便,但我仍然想知道在使用特定函数时代码应该考虑哪些可能的异常事件。

一般来说,用于库的 Scala 文档似乎没有记录异常。

Scala 用户如何确保他们的客户端代码考虑到库函数引发的各种异常事件?

最佳答案

任何可以接受函数参数的库方法都可以抛出任何异常:

List(1).map(_ => throw new SomeExceptionIJustInvented)

不幸的是,这意味着,在没有复杂的基于编译器的异常跟踪系统的情况下,程序员需要根据库文档和经验来了解可能会生成哪些异常。

如果编写对异常具有鲁棒性的代码非常重要,那么最好的方法是从相对较大的代码块中捕获所有异常。确保你只捕获 Exception,而不是所有的 throwable,因为你可能无法对内存不足的错误做任何理智的事情。所以:

try {
// Various stuff
}
catch {
case e: Exception => // Handle the case where stuff fails
}

幸运的是,Java 库明确说明它们将要抛出什么,而 Scala 库几乎总是抛出很少,而是传回 OptionEither 或其他一些除了抛出异常之外,当某些事情失败时通知您的方式。然而,使用 Java 库的 Scala 库有时有点不透明。 (例如,如果您正在执行 IO,则可以肯定会抛出 IOException。)

关于scala - 确定 Scala 函数抛出的所有可能的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8367651/

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