在Slick 3.x中捕获异常

时间:2016-04-29 03:11:03

标签: slick slick-3.0

我正在尝试在Slick 3.x中捕获SQL错误。下面的代码不打印任何东西,但如果在调试下跟踪,它工作正常(它打印失败)。这段代码出了什么问题?

object TestSlick extends App {

  val db = Database.forConfig("dbconfig")
  val sql = "update table_does_not_exist set zzz=1 where ccc=2"
  val q = sqlu"#$sql"

  db.run(q.asTry).map {result =>  
        result match {
                case Success(r) => println(r)
                case Failure(e) => {
                  println(s"SQL Error, ${e.getMessage}")
                  println("command:" + sql) 
                  throw e
                }
           }
      }

}

1 个答案:

答案 0 :(得分:3)

这是有效的,需要未来,这要归功于lxx的提示

    val future = db.run(q.asTry).map {result =>  
      result match {
        case Success(r) => println(r)
        case Failure(e) => {
          println(s"SQL Error, ${e.getMessage}")
          println("command:" + sql) 
          throw e
        }
    }
  }

  Await.result(future, Duration.Inf)