骡子:抓住异常消息

时间:2014-04-28 14:10:27

标签: java mule mule-studio mule-el

我在Mule中有一个默认的catch异常,并且我试图使用Mule表达式来访问异常消息:#[exception]

这似乎不起作用,我猜我试图访问错误的变量?我尝试使用logger记录它,并运行一个接收异常消息的自定义组件(作为字符串。)

谢谢,

5 个答案:

答案 0 :(得分:9)

在某些情况下,exception.cause可能是null,因此建议使用条件来显示消息:

[(exception.cause!=null)?(exception.cause.message):exception]

这将阻止空指针异常

答案 1 :(得分:9)

获取异常消息(null safe)的最佳方法是:

#[exception.cause.?message or exception.cause]

答案 2 :(得分:4)

你可以#[exception.causedBy]喜欢

   <choice-exception-strategy>
        <catch-exception-strategy when="exception.causedBy(com.company.BusinessException)"> <!-- [1] -->
            <jms:outbound-endpoint queue="dead.letter">
                <jms:transaction action="ALWAYS_JOIN" />
            </jms:outbound-endpoint>
        </catch-exception-strategy>
        <rollback-exception-strategy when="exception.causedBy(com.company.NonBusinessException)"> <!-- [2] -->
            <logger level="ERROR" message="Payload failing: #[payload]"/>
        </rollback-exception-strategy>
    </choice-exception-strategy>

更多详情here

答案 3 :(得分:2)

如果您想使用MEL获取异常消息,您也可以(在Catch异常策略中)使用以下表达式。

#[exception.cause.message]

答案 4 :(得分:0)

exception.cause可以为null,因此可以像这样处理:

#[exception.?cause.message or exception]