【问题标题】:value isDefinedAt is not a member of play.api.mvc.SimpleResult值 isDefinedAt 不是 play.api.mvc.SimpleResult 的成员
【发布时间】:2013-11-13 09:43:34
【问题描述】:

下面的代码出错了,我不知道是什么原因,以及如何消除这个错误,告诉我我做错了什么。

def members(id:String,name:String) = Action { implicit request =>
    try{
        session.get("userId").map{user=>
            val Data =NewModel.getInfo(id)
            val userId=session.get("userId").get
            if(userId==Data.createdBy){
                Ok(html.groupMembers(Data,"mainAdmin"))
            }else{try{
                    val admin=NewModel.admin(id,userId);
                        Ok(html.members(Data,"subAdmin"))
                 }catch{
                        try{
                            val member=NewModel.member(id,userId)
                                Ok(html.members(Data,"member"));
                        }catch{
                          if(Data.privacy!="secret")
                            Ok(html.members(Data,"outsider"))
                          else
                            Ok(html.noPageFound())
                        }
                 }   
            }   
        }.getOrElse{
            Redirect("/")
        }
    }catch{
        case e=>
          println(e)
          Ok(html.onError())
    }
    }//end groupSetting

【问题讨论】:

  • 那是编译器告诉你你在 catch 块中使用了错误的语法。但是,为了大家,请不要使用异常来进行流量控制。
  • @millhouse val admin=NewModel.admin(id,userId);当它没有找到值时给出异常。我在后端使用 cassandra
  • @flavian 这是(控制器的)scala 代码。当他是管理员时,我想向 subAdmin 发送一个字符串,如果没有找到列值,cassandra 会给出空指针异常。所以我使用try catch。
  • 这个问题似乎跑题了,因为它太简单了

标签: scala playframework try-catch scala-2.10 playframework-2.2


【解决方案1】:

在每个 catch 块中使用它

catch{
    case e=>
      //code
}

编辑:

catch{
    case e:Exception=>
      //code
}

【讨论】:

  • 值得注意的是,catch-all catch 语句通常是不好的做法 - stackoverflow.com/a/2737554/409976
  • 另外,@Amit,我在使用您的 catch-all 方法时得到了这个 warning - This catches all Throwables. If this is really intended, use case e : Throwable` 来清除这个警告。`
猜你喜欢
  • 2017-11-19
  • 2020-07-17
  • 2017-01-05
  • 2013-10-17
  • 2016-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多