В Mule я использую стратегию перехвата исключений, на которую ссылается «сложный» поток. Я поместил компонент jdbc в стратегию исключений, чтобы обновить запись таблицы в случае ошибки. Как я могу получить доступ к трассировке стека исключений, чтобы зарегистрировать ее в этой таблице? Я проверил полезную нагрузку в начале стратегии исключения, и она имеет тип org.apache.commons.httpclient.methods.PostMethod
, на самом деле я получил ошибку во время http-вызова.
Мул — обработка ошибок
Ответы (1)
В стратегии исключения исключение недоступно в полезной нагрузке. Он доступен в переменной exceptionPayload объекта Message.
Использовать
Исключение исключения = (Exception)message.getExceptionPayload().getException();
Это дает объект ExceptionPaylaod, чей метод getException() предоставляет объект исключения.
Чтобы получить трассировку стека, используйте следующее.
StackTraceElement[] ste = exception.getCause().getStackTrace();
Оттуда вы можете продолжить по мере необходимости.
Надеюсь это поможет.
person
user1760178
schedule
04.09.2013
Спасибо, это полезно. Я получаю сообщение об исключении Mule, которое не содержит трассировку стека java, которую я вижу в консоли (трассировка стека корневого исключения: java.net.UnknownHostException). Есть ли способ получить его?
- person user1820620; 04.09.2013
Более того, в MEL текущее исключение привязано к переменной
exception
.
- person David Dossot; 04.09.2013
Обновлен ответ с решением для получения StackTrace.
- person user1760178; 04.09.2013
Большое спасибо вам обоим, я использовал переменную исключения в отличном скрипте и exception.getCause().getStackTrace(), чтобы получить stackTrace.
- person user1820620; 05.09.2013