Apache Camel:errorHandler vs onException?

时间:2013-06-27 14:57:24

标签: java exception-handling error-handling apache-camel

有什么区别:

<camel:errorHandler id="deadLetterErrorHandler" type="DeadLetterChannel" 
        deadLetterUri="log:dead">

<camel:camelContext errorHandlerRef="deadLetterErrorHandler">
    ...
</camel:camelContext>

<onException>
    ...
</onException>

根据this article,两者结合使用是一种“强大的组合”。怎么会这样?他们每个人都扮演什么角色,他们如何相互补充?

2 个答案:

答案 0 :(得分:16)

errorHandler用于处理在路由和处理邮件期间抛出的任何未捕获的Exception。相反,onException用于在抛出特定Exception类型时处理它们。查看this article以了解如何使用onException

答案 1 :(得分:1)

如果您需要为每种类型的异常执行的操作不同,请使用onException。它允许您在每个异常的基础上定义错误处理。

onException(xxxException.class).to("activemq:xxxFailed"); onException(yyyException.class).to("activemq:yyyFailed");

如果您只需要一个通用处理程序,请使用errorHandler。对于所有类型的错误,将执行相同的处理。