因此,我一直在閱讀關於在LiftWeb中使用Box的this article,這似乎是官方文檔的一部分,因爲它通過源代碼註釋鏈接在一起。 我的問題是爲什麼Box/Failure更喜歡實際編碼沒有null,並拋出一個Exception,它將被捕獲到頂級並轉換成適當的錯誤代碼/消息。因此,而不是爲什麼Box/Option在LiftWeb/Scala中不是Exception?
case "user" :: "info" :: _ XmlGet _ =>
for {
id <- S.param("id") ?~ "id param missing" ~> 401
u <- User.find(id) ?~ "User not found"
} yield u.toXml
爲什麼不
case "user" :: "info" :: _ XmlGet _ => User.find(S.param("id").openOrThrow(
new IllegalArgumentException("idParamMissing"))).toXml
,並有User.find
扔東西一樣NotFoundException
不錯的問題。我從來沒有想過... – drozzy
@drozzy請確保你也閱讀郵件列表的答案:http://goo.gl/5Lv7V –