比方說,我有一個方法需要List
並找到一個基於id的元素。可能是這個元素可能不存在!在這種情況下應該做什麼?我們應該拋出一個Exception
還是處理Option
類型?拋出異常或更好地返回選項「按ID查找」方法?
def myMethod(entries: List[MyType], id: Long): MyType = {
val result = entries.collect { case entry if entry.id == id => entry }
assert(...check if result is not empty....)
result.head
}
我的觀點是,聲明assert(....)
,我明確強制調用者必須處理的IllegalStateException
。這是一個很好的做法嗎?或者我應該返回一個Option[MyType]
並讓調用者處理這種情況?你們有什麼感想?
我想 「看來爲基礎」,並且通過框架/庫變化。也就是說,返回Option通常會在Scala中產生更多的慣用可組合性。另一方面,考慮它們不是相互排斥的(比如,「First」和「FirstOrDefault」)。 – user2864740
在FP世界中,不鼓勵拋出異常,這是一種副作用。但是,如果您考慮某個列表缺少一些標識爲「例外」(由於代碼或配置錯誤)的情況,請使用它。 – Tyth