dgr*_*des 1 scala playframework-2.0
这是一个我无法弄清楚的简单问题:
以下代码给出以下编译错误:
def parseJson(q: String) = Option[JsValue]{
try{
Json.parse(q)
}catch{
case e: com.codahale.jerkson.ParsingException => None
}
}
Run Code Online (Sandbox Code Playgroud)
错误
[error] found : None.type (with underlying type object None)
[error] required: play.api.libs.json.JsValue
[error] case e: com.codahale.jerkson.ParsingException => None
Run Code Online (Sandbox Code Playgroud)
为什么我不能返回没有考虑我的响应类型是Option [JsValue]?
Alo*_*ard 10
实际上你想把Json.parse(q)放到Some()中,而不是将整个代码包装在一个Option [JsValue]中,而是用它作为签名:
def parseJson(q: String): Option[JsValue] = {
try{
Some(Json.parse(q))
}catch{
case e: com.codahale.jerkson.ParsingException => None
}
}
Run Code Online (Sandbox Code Playgroud)
但无论如何你应该更喜欢使用scala.util.control.Exception:
import scala.util.control.Exception._
catching(classOf[com.codahale.jerkson.ParsingException]).opt(Json.parse(q))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1225 次 |
| 最近记录: |