Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 调度错误处理_Scala_Playframework - Fatal编程技术网

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)
}