当前位置: 首页 > 知识库问答 >
问题:

如何捕获/处理Camel中所有未捕获的异常

韩弘方
2023-03-14

我目前在我的路由中使用dotry/doCatch块,因此我无法使用全局onException块。

然而,如果驼峰路由中断(由于错误代码或意外/未测试的场景),我希望执行一些业务逻辑。希望这永远不会发生,但我仍然想处理更糟糕的情况。

我不能在全局OneException块中有java.lang.Exception,而且,我不想在每个路由上都添加一个额外的捕获。

在抛出未捕获的异常和中断路由之前,是否有一个特定的骆驼调用方法。

我看到以下未捕获异常日志:

2015-04-20 15:11:35,279 [Camel (fulfillmentOrderProcessor) thread #5 - seda://FulfillmentSedaQueue] WARN  o.a.c.component.aws.sqs.SqsConsumer [, ID-ip-10-180-252-213-54360-1429566855015-0-144]: Exchange failed, so rolling back message status: Exchange[Message: {... }]

java.lang.IllegalArgumentException: Unable to parse string argument null

我看了UnitOfWork.afterprocess.但这并没有帮助,因为即使我在骆驼路线上处理过,交换也会有例外。

共有1个答案

诸新霁
2023-03-14

默认情况下,Camel会将异常传播回调用者,因此您可以在调用seda://FulfillmentSedaQueue路由的任何客户端代码中捕获异常...

否则,服务器端的选项(如您所提到的)是使用全局onException子句或路由特定的dotry/doCatch语句

 类似资料:
  • 我正在尝试创建一个过滤器来处理异常(请参见在JSF中处理未捕获的异常) 我在日志中看到错误: 我做错了什么?

  • 问题内容: 我知道可可中有一个UncaughtExceptionHandler,但是我正在为Swift寻找相同的东西。即,每当应用程序中有任何错误/异常由于任何错误而未在本地捕获时,它应该一直冒泡到顶级应用程序对象,在那里我应该能够妥善处理它并适当地响应用户。 Android有它。Flex有它。Java有它。想知道为什么Swift缺少此关键功能。 问题答案: Swift没有机制来捕获所有任意的运行

  • 问题 怎样捕获代码中的所有异常? 解决方案 想要捕获所有的异常,可以直接捕获 Exception 即可: try: ... except Exception as e: ... log('Reason:', e) # Important! 这个将会捕获除了 SystemExit 、 KeyboardInterrupt 和 GeneratorExit 之外的所有异常。

  • 本节介绍如何使用三个异常处理程序组件(try、catch 和 finally)来编写异常处理程序。 然后,介绍了 Java SE 7中引入的 try-with-resources 语句。 try-with-resources 语句特别适合于使用Closeable的资源(例如流)的情况。 本节的最后一部分将通过一个示例来分析在各种情况下发生的情况。 以下示例定义并实现了一个名为ListOfNumbe

  • 我有以下代码。 然而,它没有捕捉到所有的错误,我仍然得到“throw er//未处理的“错误”事件。 这是为什么呢? 例如,直到我添加了一个特定的错误处理程序,它才捕获parse()函数中的错误。即使不添加,我的try/catch是否应该捕获此错误? 提前致谢!

  • 问题内容: 我问一个有关如何覆盖默认的Java异常处理问题,被告知的答案在这里。 现在的问题是:是否有一种方法可以将该处理程序泛化为所有线程,而无需在每个线程中明确声明? 我认为应该可以某种方式获取所有线程,然后将其绑定到异常处理程序? 问题答案: 使用。正如javadoc所说: “通过设置默认的未捕获异常处理程序,应用程序可以更改那些已经接受系统提供的任何“默认”行为的线程的未捕获异常处理方式(