我在Mule中有一个默认的catch异常,并且我试图使用Mule表达式来访问异常消息:#[exception]
这似乎不起作用,我猜我试图访问错误的变量?我尝试使用logger记录它,并运行一个接收异常消息的自定义组件(作为字符串。)
谢谢,
答案 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]