Json groovy:如何捕获AsyncHttpBuilder上的异常

Json groovy:如何捕获AsyncHttpBuilder上的异常,json,asynchronous,groovy,httpbuilder,Json,Asynchronous,Groovy,Httpbuilder,我正在尝试对域进行异步调用。如果我使用json响应指定了一个有效的地址,那么下面的代码可以很好地工作,但是当地址无效时,我希望能够捕获任何可能的异常 如何捕获返回的异常 这里是stacktrace的摘录: 消息:无效的JSON字符串 http.AsyncHTTPBuilder-从响应委托引发的异常: groovyx.net.http.HTTPBuilder$RequestConfigDelegate@420db81e 代码如下: def http = new AsyncHTTPBuilder(

我正在尝试对域进行异步调用。如果我使用json响应指定了一个有效的地址,那么下面的代码可以很好地工作,但是当地址无效时,我希望能够捕获任何可能的异常

如何捕获返回的异常

这里是stacktrace的摘录:

消息:无效的JSON字符串

http.AsyncHTTPBuilder-从响应委托引发的异常: groovyx.net.http.HTTPBuilder$RequestConfigDelegate@420db81e

代码如下:

def http = new AsyncHTTPBuilder( poolSize : 1,
                                 contentType : ContentType.JSON )

def futureResult

futureResult = http.request( "http://www.notexistingdomainxyzwq.com/",
                             Method.GET,
                             ContentType.JSON ) {
    response.success = { resp, json ->
        log.info("SUCCESS")             
    }

    response.failure = { resp, json ->
        log.info("ERROR")
    }

}

log.info("Call started");

try {
    while (!futureResult.done) {
        log.info('waiting...')
        log.info("DONE: ${futureResult.done}")
        Thread.sleep(1000)
    }
} catch(ex) {
    log.error("EXCE ${ex}")
}

log.info("Call completed")
如果调用futureResult.get to block并等待结果,这将引发您可以捕获的异常:

try {
    def result = futureResult.get()
    log.info( "Done: $result" )
} catch(ex) {
    log.error("EXCE ${ex}")
}