在 Slick 3.x 中捕获异常

Catching an exception in Slick 3.x

我试图在 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
                }
           }
      }

}

这行得通,需要一个未来,感谢 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)