为什么 Future(Failure(new Exception)) returns 成功而不是失败?
Why Future(Failure(new Exception)) returns Success instead of failure?
我正在尝试以下操作并认为我会失败
val failure = Future { Failure(new Exception) }
但我得到了
Future(Success(Failure(java.lang.Exception)))
谁能回答为什么?
Future.failed
可以创造一个失败的未来,例如
Future.failed(new Exception)
或throw
在未来
Future(throw new Exception)
Future.fromTry(Failure(new Exception))
然而
Future(Failure(new Exception))
不代表失败的未来因为
Failure(new Exception)
是,尽管名称可能具有误导性,只是一个常规值,例如,
val x = Failure(new Exception)
val y = 42
Future(x)
Future(y)
所以 Future(x)
是一个成功的未来,同样的原因 Future(y)
是一个成功的未来。
您可以将 Future
视为一种异步 try-catch,因此如果您不在 try
中抛出
try {
Failure(new Exception) // this is not a throw expression
} catch {
case exception => // so exception handler does not get executed
}
然后 catch 处理程序不会被执行。
我正在尝试以下操作并认为我会失败
val failure = Future { Failure(new Exception) }
但我得到了
Future(Success(Failure(java.lang.Exception)))
谁能回答为什么?
Future.failed
可以创造一个失败的未来,例如
Future.failed(new Exception)
或throw
在未来
Future(throw new Exception)
Future.fromTry(Failure(new Exception))
然而
Future(Failure(new Exception))
不代表失败的未来因为
Failure(new Exception)
是,尽管名称可能具有误导性,只是一个常规值,例如,
val x = Failure(new Exception)
val y = 42
Future(x)
Future(y)
所以 Future(x)
是一个成功的未来,同样的原因 Future(y)
是一个成功的未来。
您可以将 Future
视为一种异步 try-catch,因此如果您不在 try
try {
Failure(new Exception) // this is not a throw expression
} catch {
case exception => // so exception handler does not get executed
}
然后 catch 处理程序不会被执行。