Как я могу сделать шаг OpenDolphin клиенту для отправки HttpHostConnectException?

Есть ли способ справиться с ситуацией, когда сообщение не доставляется на сервер? Журнал Dolphin четко информирует о ситуации, но я хотел бы поймать его из кода. Я искал какой-то метод, например: onError, чтобы переопределить, как onFinished:

clientDolphin.send(message, new OnFinishedHandlerAdapter() {
        @Override
        public void onFinished(List<ClientPresentationModel> presentationModels) {
            // Do something useful
            }
        }
    });

, но ничего такого нет. Также не работает упаковка send call в try/catch (не удивительно, поскольку send не блокирует код вызывающего абонента).

Я уверен, что есть какой-то простой способ получить информацию о недоставленном сообщении, но я не вижу его. Спасибо, в аванс, за ответы!

1 ответ

Решение

Вы можете назначить обработчик onException для ClientConnector - и вы действительно должны это делать. Обработчик исключений получит объект исключения, переданный в том, что произошло в асинхронном действии отправки.

Ниже приведен обработчик по умолчанию, который даже говорит вам, что вы должны делать;-)

Closure onException = { Throwable up ->
    def out = new StringWriter()
    up.printStackTrace(new PrintWriter(out))
    log.severe("onException reached, rethrowing in UI Thread, consider setting ClientConnector.onException\n${out.buffer}")
    uiThreadHandler.executeInsideUiThread { throw up } // not sure whether this is a good default
}
Другие вопросы по тегам