【发布时间】:2023-03-11 20:19:01
【问题描述】:
给定一个选项,获取其值或尝试抛出异常的惯用方法是什么?
def foo() : String = {
val x : Option[String] = ...
x.getOrException()
}
【问题讨论】:
-
为什么不
.get? -
@MyseriousDan 我刚刚偶然发现了这个案例。我有一种情况,我绝对 100% 确定它必须返回 Some,如果不是,这是一个严重的问题,必须抛出。但我想抛出我自己的异常和任何模棱两可的
NoSuchElementException异常。此外,大多数情况下,此方法可以安全地返回 None。 -
真正的问题是为什么你的类型说它可能会丢失,而你知道它不是。如果你能用类型表达你的知识,那通常是最好的。它可能需要稍微改造你的课程,但从长远来看通常会更愉快。
-
@TravisBrown 的答案应该是公认的,而不是我的。我的不是惯用的,我还是“新手”时写的(我仍然是,但级别 2)。举个例子不做什么... ;-)
-
如果你不得不抛出异常,那你就做错了。使用 Option 的惯用方式是返回 None 并且根本不抛出异常。
标签: scala