Exception 如何为mule中的4xx和5xx错误创建全局异常处理?

Exception 如何为mule中的4xx和5xx错误创建全局异常处理?,exception,exception-handling,mule,anypoint-studio,apikit,Exception,Exception Handling,Mule,Anypoint Studio,Apikit,我正在使用Anypoint 6.1和Mule 3.8.1,并且正在研究API工具包创建的全局异常处理的额外错误处理 我想补充一点: 408请求超时 429请求太多 500内部服务器错误 503服务不可用 处理这些错误的最佳方法是什么 我希望使用API工具包异常处理,但找不到用于上述操作的预期类型。有人知道我在哪里可以找到用于这些错误的预期类型吗 XML API工具包异常映射: <apikit:mapping-exception-strategy name="apiKitGlobalEx

我正在使用Anypoint 6.1和Mule 3.8.1,并且正在研究API工具包创建的全局异常处理的额外错误处理

我想补充一点:

  • 408请求超时
  • 429请求太多
  • 500内部服务器错误
  • 503服务不可用
处理这些错误的最佳方法是什么

我希望使用API工具包异常处理,但找不到用于上述操作的预期类型。有人知道我在哪里可以找到用于这些错误的预期类型吗

XML API工具包异常映射:

<apikit:mapping-exception-strategy name="apiKitGlobalExceptionMapping">
    <apikit:mapping statusCode="400">
        <apikit:exception value="org.mule.module.apikit.exception.BadRequestException" />
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Bad request&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>      
    <apikit:mapping statusCode="404">
        <apikit:exception value="org.mule.module.apikit.exception.NotFoundException" />
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Resource not found&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>
    <apikit:mapping statusCode="405">
        <apikit:exception value="org.mule.module.apikit.exception.MethodNotAllowedException" />
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Method not allowed&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>
    <apikit:mapping statusCode="406">
        <apikit:exception value="org.mule.module.apikit.exception.NotAcceptableException" />
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Not Acceptable&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>    
    <apikit:mapping statusCode="408">
        <apikit:exception value="java.util.concurrent.TimeoutException"/>
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Request Timeout&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>  
    <apikit:mapping statusCode="415">
        <apikit:exception value="org.mule.module.apikit.exception.UnsupportedMediaTypeException" />
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Unsupported media type&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>  
    <apikit:mapping statusCode="429">
        <apikit:exception value="java.lang.Exception"/>
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Unsupported media type&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>  
    <apikit:mapping statusCode="500">
        <apikit:exception value="java.lang.Exception"/>
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Unsupported media type&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>  
    <apikit:mapping statusCode="503">
        <apikit:exception value="java.lang.Exception"/>
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Unsupported media type&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>          
</apikit:mapping-exception-strategy>


谢谢

APIKIT根据定义的APIKIT:exception值匹配异常。因此,定义的异常类的状态代码应该是1:1。在您的情况下,如果您想设置500,那么只有当异常与org.mule.module.apikit.exception.InternalServerErrorException匹配时,才让它返回。您需要决定每个代码对应哪一个。