我的m子流具有如下捕获异常策略:
<catch-exception-strategy when="org.mule.util.ExceptionUtils.containsType(exception, IllegalArgumentException.class)"
doc:name="Catch Exception Strategy">
<logger message="IllegalArgumentException occurred" level="INFO" doc:name="logInfo" />
</catch-exception-strategy>
表达式
org.mule.util.ExceptionUtils.containsType(exception, IllegalArgumentException.class)
将null作为第二个参数发送到类containsType
的方法org.mule.util.ExceptionUtils
。当我将表达式更改为org.mule.util.ExceptionUtils.containsType(exception, java.lang.IllegalArgumentException.class)
时,这一次ule子说表达式错误,并引发异常。所以我的问题是为什么表达式
org.mule.util.ExceptionUtils.containsType(exception, IllegalArgumentException.class)
将null发送给第二个参数?有人可以建议吗?
最佳答案
如果要对每种类型的异常实施不同的处理,则可以使用“ choice-exception-strategy”。这里有一个例子:
<flow name="Sample_Flow">
...
<choice-exception-strategy doc:name="Choice Exception Strategy">
<catch-exception-strategy doc:name="Catch Exception Strategy" when="#[exception.causedBy(org.mule.api.routing.filter.FilterUnacceptedException)]">
<set-variable variableName="errorStatusCode" value="404" doc:name="Set status code"/>
<set-variable variableName="errorReasonPhrase" value="Not Found" doc:name="Set reason phrase"/>
</catch-exception-strategy>
<rollback-exception-strategy doc:name="Rollback Exception Strategy">
<logger level="INFO" doc:name="Logger" message="Unknown error"/>
</rollback-exception-strategy>
</choice-exception-strategy>
</flow>
对于您的特定实现,您可以尝试仅使用“ IllegalArgumentException”代替“ llegalArgumentException.class”:
<catch-exception-strategy when="org.mule.util.ExceptionUtils.containsType(exception, IllegalArgumentException)">
<logger message="IllegalArgumentException occurred #[exception.getCauseException().getClass()] - #[IllegalArgumentException]: #[org.mule.util.ExceptionUtils.containsType(exception.getCauseException(), IllegalArgumentException)]" level="INFO" doc:name="logInfo" />
</catch-exception-strategy>
经过分析,我发现表达式“ IllegalArgumentException.class”返回null,但是表达式“ IllegalArgumentException”返回该类。
您可以在下一个链接中找到更多信息:
https://docs.mulesoft.com/mule-user-guide/v/3.7/choice-exception-strategy