gpt4 book ai didi

scala - 调度错误处理

转载 作者:行者123 更新时间:2023-12-01 10:59:24 25 4
gpt4 key购买 nike

我通过这种(简单的、阻塞的)方式从我的请求中得到响应:

val response = Http(req)()

但是我从 Play 中得到了这个错误!框架:

ExecutionException: java.net.ConnectException: Connection refused to http://localhost:8983/update/json?commit=true&wt=json

我从来没有考虑过 Dispatch 或 Scala 中的异常处理。在 Dispatch 库中我必须注意哪些错误?捕获每种类型/类别的错误的语句是什么?

最佳答案

在这种情况下,一种常见的处理异常的方法是使用 Either[Throwable, Whatever] 来表示结果,其中某种失败实际上并不是那么异常。 Dispatch 0.9 通过 Promise 上的 either 方法(顺便说一句,我在 my answer to your earlier question 中使用了它)使这变得很方便:

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

还有许多其他方法可以使用 Either 来更方便地处理故障——参见示例 this Stack Overflow answer .

关于scala - 调度错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12546142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com