Я прочитал соответствующую документацию, но я не мог понять, почему мое исключение не зацепило.Apache Camel - Исключение не поймано
Это моя конфигурация маршрута:
<route id="foo">
<from uri="vm://.../>
<doTry>
<to uri="jetty:http://127.0.0.1:123/foo?restletMethod=PUT"/>
<to uri="ejb:java:global/..?method=method1(${body}, ${headers})"/>
<to uri="ejb:java:global/..?method=method2(${body}, ${headers})"/>
<doCatch>
<exception>java.lang.Exception</exception>
<transform>
<simple> ${exception.message} </simple>
</transform>
<to uri="smtp://... />
</doCatch>
</doTry>
</route>
Теперь, когда JettyClient не достижимости org.apache.camel.CamelExchangeException
брошено, маршрут заканчивается, и я получаю по электронной почте. Это желаемое поведение.
Но когда method1
выбрасывает исключение, он не улавливается, поэтому маршрут продолжается и Я не получаю электронное письмо.
Как я могу заставить верблюда распознать и обработать исключение во втором случае?
Решение: Убедитесь, что исключение не брошено внутри примерки поймать блок -.-
Вы пытаетесь исключить этот метод1? Если вы не объясняете исключение, верблюд поймает его в DefaultErrorHandler, так что маршрут тоже заканчивается – dey
Да, он выдает исключение. – sinclair
Вы пытаетесь вызвать код в методе? потому что ваш 'uri' ошибочен, попробуйте это: ' ' Я не знаю, почему верблюд даже начинает с этого. –
dey