这是一个测试程序:
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 declaration或surround with try/catch.
在Scala中运行之前如何知道程序有未处理的异常?
Scala在Exceptions 方面有一些不同的哲学.
经验法则是不要使用它们,除非是真正特殊的东西,因此"让它失败".在此规则背后引用的原因是,在FP术语中,异常会破坏参照透明度.
好的做法是使用Either或Option处理/包装"错误"而不是抛出异常.(@Tawkir提供的链接似乎很好读)
不幸的是,当与Java代码接口时,这通常会使用Exceptions进行程序控制流,并且编译器无法帮助您.解决这个问题的一个实际方法是使用a包装Exception抛出代码,Try然后调用recover或recoverWith处理这些异常,并将它们包装在另一个结构中.
请注意,您可以使用@throws注释标记scala方法以指定此方法抛出的异常,但在编写scala代码时,应该使用此方法,该代码旨在由Java调用者使用,期望抛出异常.
| 归档时间: |
|
| 查看次数: |
455 次 |
| 最近记录: |