Catch Exception Strategy in Mule
You can define a catch exception strategy to customize the way Mule handles messages with errors. A catch exception strategy catches all exceptions thrown within its parent flow and processes them, thereby overriding Mule’s implicit default exception strategy.
Mule’s catch exception strategy behavior is similar to a Java catch block, except that you cannot throw a new exception or catch another exception within a catch exception strategy.
When to Use :
Use a catch exception strategy to design a unique strategy for handling a message that contains an error. Further, you can use a catch exception strategy to:
Avoid propagating exceptions to inbound connectors
Avoid propagating exceptions to parent flows via Flow Reference Components
Ensure that a transaction processed by the flow is not rolled back when an error occurs (that is, the transaction is never “rolled back” to reattempt processing; Mule commits the transaction.)
flow of catch exception strategy
If exception occurs than catch exception strategy catches the exception set the status code by property file and display user defined message by set payload.
property transformer view :
property transformer view :
URL : http://localhost:8085/api/catch
Method : POST
Input :
Here i have sent wrong json input so exception will occur and handled by catch exception strategy.
Method : POST
Input :
Here i have sent wrong json input so exception will occur and handled by catch exception strategy.
Output :
XML project code :
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd">
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8085" basePath="/api" doc:name="HTTP Listener Configuration"/>
<flow name="test_catchexceptionFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/catch" doc:name="HTTP"/>
<json:json-to-xml-transformer doc:name="JSON to XML"/>
<set-payload value="#[payload]" doc:name="Set Payload"/>
<catch-exception-strategy doc:name="Catch Exception Strategy">
<set-property propertyName="http.status" value="400" doc:name="Property"/>
<set-payload value="Input is not correct" doc:name="Set Payload"/>
</catch-exception-strategy>
</flow>
</mule>