【发布时间】:2014-12-30 15:50:10
【问题描述】:
我很好奇为什么scala.util.Try 没有像这样的异常类型的类型参数
abstract class Try[+E <: Throwable, +T] {
recoverWith[U >: T](f: PartialFunction[E, Try[E, U]]): Try[E, U]
...
}
对文档有帮助,例如
def parseInt(s: String): Try[NumberFormatException, Int]
仍然无法表达像throws SecurityException, IllegalArgumentException 这样的不相交的异常类型,但至少朝这个方向迈出了一步。
【问题讨论】:
-
您的目标是让
Try { foo }只捕获来自foo的特定异常,而不是所有异常? -
我的目标是表明返回 Try 的函数只能在特定异常下失败,而不是任何 Throwable
-
我的回答有什么相关性吗?
-
是的,我给了它+1。我主要好奇的不是如何克服它,而是为什么它一开始就不存在。就像在这种情况下会被破坏一样。
-
在这方面尝试似乎并不完美,是的。
标签: scala exception-handling try-catch algebraic-data-types