因此,我一直在阅读关于在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 –