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

Guo*_*Guo 6 scala

这是一个测试程序:

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
    }
}
Run Code Online (Sandbox Code Playgroud)

在Java中,当我使用unhandling异常调用方法时,程序将发生错误,并告诉你add throws declarationsurround with try/catch.

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

Bru*_*der 8

Scala在Exceptions 方面有一些不同的哲学.

经验法则是不要使用它们,除非是真正特殊的东西,因此"让它失败".在此规则背后引用的原因是,在FP术语中,异常会破坏参照透明度.

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

不幸的是,当与Java代码接口时,这通常会使用Exceptions进行程序控制流,并且编译器无法帮助您.解决这个问题的一个实际方法是使用a包装Exception抛出代码,Try然后调用recoverrecoverWith处理这些异常,并将它们包装在另一个结构中.

请注意,您可以使用@throws注释标记scala方法以指定此方法抛出的异常,但在编写scala代码时,应该使用此方法,该代码旨在由Java调用者使用,期望抛出异常.