groovy: как перехватывать исключения в 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")

person Giorgio Andretti    schedule 24.04.2014    source источник


Ответы (1)


Если вы вызываете futureResult.get() для блокировки и ждете результата, это вызовет исключение, которое вы можете поймать:

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