gpt4 book ai didi

scala:如何在程序运行前知道程序有未处理的异常?

转载 作者:行者123 更新时间:2023-12-02 19:42:06 26 4
gpt4 key购买 nike

这是一个测试程序:

object Test {

def main(args: Array[String]): Unit = {
// there is an unhandled exception in here, I expect program can remind me, and I can handled it before running.
myException()
}

def myException: Unit ={
throw new Exception
}
}

在Java中,当我调用一个带有未处理异常的方法时,程序会出现错误,并告诉你add throws declarationsurround with try/catch .

Scala中运行之前如何知道程序有未处理的异常?

最佳答案

Scala 对于异常有一些不同的理念。

经验法则是除非有真正特殊的事情,否则不要使用它们,因此“让它失败”。调用此规则的原因是,用 FP 术语来说,异常会破坏引用透明度。

好的做法是使用 EitherOption 来处理/包装“错误”而不是抛出异常。 (@Tawkir 提供的链接似乎很好读)

不幸的是,这在与经常使用异常进行程序控制流的 Java 代码交互时没有帮助,并且编译器不会为您提供帮助。解决此问题的一种实用方法是使用 Try 包装异常抛出代码,然后调用 recoverrecoverWith 来处理这些异常,例如,包装他们在另一个结构中。

请注意,您可以使用 @throws 注释来标记 scala 方法,以指定该方法抛出的异常,但这实际上应该在编写要使用的 scala 代码时使用由 Java 调用者期望抛出异常。

关于scala:如何在程序运行前知道程序有未处理的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42619932/

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