【发布时间】:2016-09-25 02:41:47
【问题描述】:
我在使用 Scala 奇妙的 Try 构造时看到的一个常见模因是:
Try(canThrowException) match {
case Success(result) => result
case Failure(e) => throw new Exception("Couldn't do it", e)
}
我经常想让这个结构更优雅一点:
Try(canThrowException).getOrElse(throw new Exception("Couldn't do it"))
这样做消除了我链接canThrowException 引发的异常的能力,但看起来更漂亮。
您知道一种同时拥有优雅构造和异常链的方法吗?
【问题讨论】:
-
可以添加扩展方法;例如
def throw(): Success[A]、def getOrThrow: A、def throw(f: Throwable => Nothing): Success[A]、def getOrThrow(f: Throwable => Nothing): A。
标签: scala exception-handling try-catch