Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache camel Apache Camel-未捕获异常_Apache Camel - Fatal编程技术网

Apache camel Apache Camel-未捕获异常

Apache camel Apache Camel-未捕获异常,apache-camel,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}, ${

我阅读了相应的文档,但是我不明白为什么我的异常没有被捕获

这是我的路线配置:

  <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.camelException
, 路由终止,我收到一封电子邮件。这是理想的行为

但是当
method1
抛出异常时,它不会被捕获,因此路由将继续并 我没有收到电子邮件

在第二种情况下,我如何让camel识别并处理异常


解决方案:确保在try-catch块中未引发异常-。-

文档中说明了这一点:

骆驼错误处理已禁用

使用doTry时。。记录。。最后是常规的驼峰错误 处理程序不适用。这意味着任何一个例外或类似的情况都会发生 不触发。原因是多特里。。记录。。他终于进来了 事实上,它有自己的错误处理程序,它的目标是模仿和工作方式 try/catch/finally在Java中工作

你最好这样写:

.doCatch(Exception.class)
        // and catch all other exceptions
        // they are handled by default (ie handled = true)
        .to("direct:error")

在direct(直接):error(错误)中,您可以指定发生错误时应采取的措施。

您是否认为舒尔method1会引发异常?如果您没有明确捕获异常,camel将在DefaultErrorHandler中捕获它,因此路由终止。是的,它会抛出异常。您是否认为调用了方法中的代码?因为您的
uri
是错误的,请尝试以下操作:
我不知道camel为什么以这个开头。是的,调用了该方法。只是问题中的一个输入错误..有没有办法在我上面的xml结构中配置它?顺便问一下,方法1中引发了什么异常?您可以共享方法1的代码吗?因为我已经完成了相同的过程,异常被捕获,所以一定发生了其他事情。在方法中没有嵌套在try-catch中的任何其他内容?GNARF!就这样!方法中有一个尝试捕获…-谢谢是的,这是一个经典;)