IllegalArgumentException

IllegalArgumentException

我的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

10-08 19:21