Scala 调度错误处理
我通过以下(简单、阻塞)方式从请求中获得响应: 但我从游戏中得到了这个错误!框架:Scala 调度错误处理,scala,playframework,Scala,Playframework,我通过以下(简单、阻塞)方式从请求中获得响应: 但我从游戏中得到了这个错误!框架: ExecutionException: java.net.ConnectException: Connection refused to http://localhost:8983/update/json?commit=true&wt=json 我从未考虑过在Dispatch或Scala中处理异常。我必须在调度库中注意哪些错误?捕捉每种类型/类别错误的语句是什么?在这种情况下,处理异常的一种常见方法是
ExecutionException: java.net.ConnectException: Connection refused to http://localhost:8983/update/json?commit=true&wt=json
我从未考虑过在Dispatch或Scala中处理异常。我必须在调度库中注意哪些错误?捕捉每种类型/类别错误的语句是什么?在这种情况下,处理异常的一种常见方法是使用
或[Throwable,which]
来表示结果,而在这种情况下,某种类型的故障实际上并不那么例外。Dispatch 0.9通过Promise
上的或方法(顺便提一下,我在中使用了该方法)方便了这一点:
现在,您可以非常自然地使用模式匹配来处理异常:
import java.net.ConnectException
response match {
case Right(res) => println(res.getResponseBody)
case Left(_: ConnectException) => println("Can't connect!")
case Left(StatusCode(404)) => println("Not found!")
case Left(StatusCode(code)) => println("Some other code: " + code.toString)
case Left(e) => println("Something else: " + e.getMessage)
}
还有许多其他方法,您可以使用或来更方便地处理故障,例如参见。当返回的不是200个HTTP代码时,是否有一种方法可以获取响应正文?嗨,模式匹配是等待还是阻塞,直到您得到响应,就像您使用a来理解一样?我对使用这种解决方案是否安全感到有点困惑。谢谢
import com.ning.http.client.Response
val response: Either[Throwable, Response] = Http(req).either()
import java.net.ConnectException
response match {
case Right(res) => println(res.getResponseBody)
case Left(_: ConnectException) => println("Can't connect!")
case Left(StatusCode(404)) => println("Not found!")
case Left(StatusCode(code)) => println("Some other code: " + code.toString)
case Left(e) => println("Something else: " + e.getMessage)
}