我有这样的路线:
onException(classOf[RuntimeException]).process(runtimeProcessor).process(doSmth).log(LoggingLevel.INFO, "new", "${exchangeId} --- ${exception.stacktrace} ")
在处理器上我做:
CustomException customException =new CustomException ()
exchange.setException(customException )
exchange.getOut.setBody(doc)
现在的问题是,在此处理器之后,它不会转到其他处理器(即在我的情况下,它不会转到“doSmth”处理器)
我猜这种行为是因为我在交换机上更改了异常,因为我已经在其上构建了“onException”。
即使更改了Exchange的例外,有没有办法强行继续我的路线!!
答案 0 :(得分:1)
我试图包装进入exchage的已捕获异常并将其包装到另一个自定义异常中。
在此包装之后,我需要将此异常设置为自定义交换。 我后来在骆驼论坛上发现@Claus Ibsen-2,Camel将不会继续。我使用时路由
exchange.setException(ex)
通过执行以下@ processor处理器,我设法做了一些工作:
exchange.getOut.setHeader("ex",customException)
然后@Route:
this.onException(classOf[IOException]).process(doSmth).log(LoggingLevel.INFO, "new", ${in.header.ex} ")
它将以下内容打印到我的日志中,从一开始我需要的是: CustomException:java.lang.IOException