Mule 为什么我不能';无法捕获子流中的错误?

Mule 为什么我不能';无法捕获子流中的错误?,mule,mule-studio,mulesoft,mule4,Mule,Mule Studio,Mulesoft,Mule4,在主api中,我调用一个子流。我已经在主流程和子流程中定义了错误处理程序。(我的是复杂场景) 这里是我正在尝试的一个简单的流程设计; 在主流中,我在异步范围内调用I子流。Mainflow本身具有errorhandler。 在报告子流中,我调用另一个子流,它抛出403错误。 我想在报告子流时处理这个问题。所以我用了,一出错就继续。我使用日志中介器查看它是否被执行。 但事实并非如此。 相反,从我得到的主流中,记录“在主错误处理程序中” 我还没有定义任何全局错误处理程序。 为什么呢 主流量 <f

在主api中,我调用一个子流。我已经在主流程和子流程中定义了错误处理程序。(我的是复杂场景) 这里是我正在尝试的一个简单的流程设计; 在主流中,我在异步范围内调用I子流。Mainflow本身具有errorhandler。 在报告子流中,我调用另一个子流,它抛出403错误。 我想在报告子流时处理这个问题。所以我用了,一出错就继续。我使用日志中介器查看它是否被执行。 但事实并非如此。 相反,从我得到的主流中,记录“在主错误处理程序中” 我还没有定义任何全局错误处理程序。 为什么呢

主流量

<flow name="post:\notifications:raml-config">
.................
                <async doc:name="Async">
                    <try doc:name="Try">
                        <flow-ref doc:name="Call-Reporting-subFlow
                            name="reporting-subflow" />
                        <error-handler >
                            <on-error-propagate enableNotifications="true" logException="true" doc:name="On Error Propagate" doc:id="743fc7cb-38d4-4a0c-ab36-9105645ce710" >
                                <logger level="INFO" doc:name="Logger" doc:id="5d18eb33-780e-4353-b65f-b26eec88612a" message="in main errror handler"/>

............
</flow>
<sub-flow name-"reporting-subflow">
<try doc:name="Try"  >
            <flow-ref doc:name="getcontracts"  name="get-details-subflow" />
            <error-handler >
                <on-error-continue enableNotifications="true" logException="true" doc:name="On Error Continue" type="HTTP:FORBIDDEN">
                        <logger level="INFO" doc:name="Logger" message="GOT 403 error"/>
                <flow-ref doc:name="gettoken"  name="getToken-subflow" />
</error-handler>
        </try>
</sub-flow>

.................

以下原因之一可能是:

  • 我们不能为子流定义错误处理,我们只能这样做 对于私有流和正常流
  • 即使主流有一个错误处理程序,在 此错误处理程序将不管理异步作用域。解决 这:
    • 将异步错误处理程序中引用的流设置为
      私有流,并在流级别定义错误处理
    • 或者在应用程序级别定义全局错误处理

  • 以下原因之一可能是:

  • 我们不能为子流定义错误处理,我们只能这样做 对于私有流和正常流
  • 即使主流有一个错误处理程序,在 此错误处理程序将不管理异步作用域。解决 这:
    • 将异步错误处理程序中引用的流设置为
      私有流,并在流级别定义错误处理
    • 或者在应用程序级别定义全局错误处理

  • 您是否验证了确实收到了“HTTP:probled”错误?因为您的子流错误处理程序只接受该类型的错误,而异步处理程序接受所有错误。@afelisatti是,它是403。失败:禁止(403)。错误类型:HTTP:FORBIDDEN@afelisatti我将报告子流更改为flow,现在我的try scope的错误处理捕获了错误。您是否验证了您确实收到了“HTTP:FORBIDDEN”错误?因为您的子流错误处理程序只接受该类型的错误,而异步处理程序接受所有错误。@afelisatti是,它是403。失败:禁止(403)。错误类型:HTTP:FORBIDDEN@afelisatti我将报告子流更改为flow,现在我的try作用域的错误处理捕获错误。