As code is executed, some errors could occur, such as invalid credentials, SSL problems, mistakes in authorization and authentication, and system connectivity issues or data validation issues. The error handler in MuleSoft detects errors and lets us create code that implements error handling strategies that can handle the errors promptly. Before we start, if you need to learn more, check this MuleSoft course today.
In this blog post, and the series to follow, I will present six error handling strategies that work with Mule 4 and their application instances.
Mule 4 errors Errors in the system and messaging issues
In Mule 4, we see two types of errors: system errors and messaging mistakes.
Systems errors occur in the event of an issue in the deployment process due to an external system’s inaccessibility. They happen during the initialization of an application in which it is not the Mule Event isn’t affected. Error handling is not able to deal with system errors.
Messaging problems occur during the time the Mule application is running. They are caused by external connectivity, business data validation, or execution processors in which the Mule process triggers them. An error handling strategy handles messaging errors.
It is important to note that the Mule 4 runtime is based on an event-driven architecture (EDA). This means that a process needs an event to be activated for the process to run. For each processor in the Mule flow, there is the Mule event, which is composed of attributes, payloads, and variables. In addition, the Mule event also contains an error object, which helps extract additional information from the event that includes the root of the error or any other internal errors. Check this MuleSoft tutorial to start learning modern MuleSoft concepts.
Components of a mule four error
There are particular components in the error object that aid us in obtaining the details of the error.
- #[error. description] Description of the issue.
- #[error.detailedDescription] – A description of the problem. This could be the same or even more comprehensive than the Description.
- #[error. errorType] A type used to describe the problem allows for routing errors handlers.
- #[error. cause] – – The Java Throwable caused the error.
- #[error. childErrors] A possible collection of internal errors utilized by elements such as Scatter-Gather to give aggregated route errors.
- #[error.errorMessage] – An optional Mule message about the problem.
The log and propagate the error to MuleSoft’s error handler of default.
Now that we’ve examined the two types of error and are aware of the mechanisms that trigger errors and are handled, I’ll discuss the handling of errors provided by MuleSoft’s runtime. MuleSoft’s runtime offers its default handling of errors if we don’t contain any error handling software. The error is recorded and then propagated to the user.
If an error occurs within the HTTP Request component, The error handling ceases the flow’s processing. It forwards an error message to the default handler that records and then propagates the error. This default handler for errors is implemented in the Mule runtime and will detect the error if there isn’t any error handling in the flow.
MuleSoft offers two handlers to perform the processing according to our specifications: On-Error Proceed or On-Error Propagate. A component that handles an On-Error-Continue error takes care of the exception but doesn’t send errors back to the flow’s parent or the handler. The On-Error Propagate component takes care of the error and then forwards it into the error handler’s parent flow.
Now you understand the structure of a Mule event, the location of the object that causes the error, the two types of faults (system and messaging), which error handler default functions, and the differences between the On-Error Continue Propagate components.
In the second part of this sequence, I’ll be covering other Mule 4 error handling tips that include multiple use cases and scenarios, on-error continue, and Propagate for the flow of parent and child and the global and reference error handling.