Error handling 如何触发WSO2序列中的错误?

Error handling 如何触发WSO2序列中的错误?,error-handling,sequence,mediator,wso2ei,Error Handling,Sequence,Mediator,Wso2ei,我想创建一个输入序列,在该序列中,我使用开关中介器检查参数。如果param的值与特定字符串不对应,则应抛出错误并按错误序列移动流 例如,我创建了以下序列: <sequence name="testEquivalence" trace="disable" xmlns="http://ws.apache.org/ns/synapse"> <switch source="$ctx:uri.var.myParam"> <case regex="hel

我想创建一个输入序列,在该序列中,我使用开关中介器检查参数。如果param的值与特定字符串不对应,则应抛出错误并按错误序列移动流

例如,我创建了以下序列:

<sequence name="testEquivalence" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
    <switch source="$ctx:uri.var.myParam">
        <case regex="hello">
             <log description="DISPLAY" level="full">
                <property name="value" value="RIGHT VALUE FOR THE PARAM myParam"/>
        </case>
        <default>
            <log description="FAULT" level="full">
                <property name="FAULT" value="WRONG VALUE FOR THE PARAM myParam"/>
            </log>
            <makefault version="pox">
                <reason value="Wrong value"/>
                <detail expression="'Wrong value. Try with hello.'"/>
            </makefault>
        </default>
    </switch>
</sequence>

如您所见,我想显示一个日志,如果它正常,则显示“参数myParam的正确值”。或者,我想显示一个日志,然后停止默认部分中的进程,以传递故障序列


然而,我创建了一个makefault中介来“建模”我的错误,但是是否有可能用更多的东西来代替它。。。executive停止进程并按错误顺序重定向流,就像抛出异常一样?

在WSO2 ESB/EI中无法抛出异常。通常,在创建SOAPFault之后,您希望将其返回给服务的调用者。解决方案是在故障调解器之后使用响应调解器:

<sequence name="testEquivalence" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
    <switch source="$ctx:uri.var.myParam">
        <case regex="hello">
             <log description="DISPLAY" level="full">
                <property name="value" value="RIGHT VALUE FOR THE PARAM myParam"/>
        </case>
        <default>
            <log description="FAULT" level="full">
                <property name="FAULT" value="WRONG VALUE FOR THE PARAM myParam"/>
            </log>
            <makefault version="pox">
                <reason value="Wrong value"/>
                <detail expression="'Wrong value. Try with hello.'"/>
            </makefault>

           <respond/>

        </default>
    </switch>
</sequence>

OK。这正是我想知道的。因此,在将故障返回给客户端之前,我必须使用有效负载工厂来“重构”故障的内容。