Welcome back. In this video, you'll understand about error handling scopes. There are two types of error handling scopes on error propagate and on error continue. Let us see actually every flow as we know has error handling block right now didn't have anything here. Now, what I want to do is in this validate and transform I want to drag and drop an error handler. So, here in the core module, we can see there are two things on error continue and on error propagate.
So firstly, I will discuss a vote on error propagate. I'll drag and drop on error propagate handler here. And inside it, I will write some logs let us see and dragon Drop a locker and here I'll configure in invalidate and grass on row inside on okay. So, let us see now I have configured on error propagate, it's actually what will happen, all the process in error handling scope are executed. So in this error handling scope can have multiple components like I can drag one more component also, whatever handlers or whatever Event Processor they're in on propagate on or appropriate they all will be executed and then the error will be returned to the calling through what is the calling flow for this validation transform? The main flow here, it will be thrown at you go to here, and here I don't have any error handler.
So what will happen? The error gets read thrown, and the default error handler will get executed. Let's see. I will I think this should have restarted after I saved it, save it again. And I'll wait until this gets restarted. Yep, is getting reached afterwards is saved.
Now I will do request this lesson See, now I got the response. And I want to see the logs. Here, I see that on error profit handler got executed. Right. So let's see here again, maximize. You can see that there's a log method also.
Right. Here I can see the log of on error propagate and there's a message and the logger inside on error property it also is executed is it so the error got propagated from wild kid transform flow after this got executed. Okay. Now, the error status code is 500. You can see Now what I'll do is after calling the validate and transform, there is one more logger also here. What is this logging in the main flow?
It's saying in main flaw after getting all products. Now, what I want is in this valid in transform flow, I want to handle the exception and continue to the next rest of the main flow as if nothing has happened. So, what I can do is I will delete this on error propagate and I will drag and drop on error continue. Okay, here inside this also again and try to write a logger. You just observe here and write in Inside answer on error current in new Okay. Now I've saved it hopefully it should get restarted Okay, it got restarted.
So, you request to the console first give a request I should get, see the response. I got straight this 200. Okay, I got an empty response. Why? Let's see here. What will happen whenever you request to come here the payload is empty when it is set with variable and we'll call flow reference also the payload is still empty.
Right and here next steps As a criminal, if exception occurs here the rest of the process are not executed. It come to honor continue this logger is executed comes back as if nothing has happened then this logger gets executed. Okay. And then since we said on error continue, actually the meaning is work, the request should continue to the collar as if nothing has happened. So, for the main floor, it feels like there was success on so that's the reason why we got 200 and since there is no payload set it was empty right. But if you see the locks it should observe this lock as well as this lock.
Let us see in the logs. See your first insight honor continue then in the main flow right. So let me summarize. If you are using on error propagate All processors in error handling scope are executed at the end of the scope, rest of the flow that through the error is not executed. error is read thrown to the next level and handled that. So that's what happened earlier, error was returned to me main flow and in the main flow, there was no handler again, so default error handler and HTTP listener return error response.
Now, same thing, at the end of the scope, if you're using on error continue the rest of the flow that through the exception is not executed, but event is passed up to the next level as if the flow execution has successfully completed. And HD prisoner return successful response. So I should say same thing using diagrams, various scenarios, scenario one see Here this is one single flaw where I have HTTP listener and there is no error handler and assume that error occurs here, because it occurs here, what will happen subsequent process are not executed. And since there is no error handler, the default error handler is executed errors return right. And then HTTP listener returns error response right. Then in the calling flow, this is a main flaw and here there is on error propagate.
Error occurs here. As usual, if error occurs, subsequent processes are not executed. Right. And whatever you have inside on error propagate is executed. You can see this here, error gets thrown. And since you're using on error propagate, the HTML is not well written.
Aaron response okay. But if you use honor continue here. If you use honor continue the history will is not will return success code success response 200 success. So on error continuum is written as if nothing is a success responses return, then this is very interesting now, this is calling was the main flow from the main flow we're having issues we are calling for reference in the tail flow, let's assume that error occurs in the child flow at this point. Now, subsequent processes are not executed. And here the child's logo on error propagate is executed and the error is read thrown here.
Here it is main flow. Again we have on and propagate, this also gets executed and this gets read from now Since there is error prone HTTP reasonable return error response code, same thing right same thing you can observe the flow here. And finally, if you see here, another scenario, the main first country for Eric, here we have honor propagate, this gets executed, error gets returned. Once it comes here again on error continuous scope is executed on error continue as we are using are to happen. Of course, subsequent process are not executed, but HTTP resumed will return success code, is it? Yes.
Finally, let's assume that another scenario, let's assume that main plus culture error occurs here. Right. Now in this jail flow verging on error, continue So, Eric Korea in the child flows subsequent process are not executed the error choosing honor continue the control will return to main flow as if nothing has happened as if nothing has happened. So subsequent process in the mean flow or execute and then HTTP listener does the status code appropriate status and these are the various scenarios right. So, we understood about how to configure an error handler two types of error handlers on error propagate on error continue Okay. Now, what I want to do is here in in this second flow we are calling another flow Get Products by name which is nothing but consuming soap web service.
So the controller will go to get products by name if this validator is not throwing any error that means what we have to pass a query parameter called as product name with hp or Mac select we give a request I've saved it whatever is modified I hopefully and assume that it got restarted. Okay, I'll pass product name is equals to hp. Now, let us see what are the response are we getting I got faxes response and of course, this is the JSON response which I got get product binding response okay. So what happened nothing was no error was there from the main flow, I called validate flow. This validator did throw an exception and the request went to consumer flow and this is consumed soap web service and I got the response. Okay, but you see this transform method did I read anything?
No, I didn't read anything. So if I wanted a pure JSON response, dot body dot products by name doc Starbucks, this is a XML as an outcome of soap web service consumer write XML contains a lot of products so if we want our products as an array start from its I've modified it and I saved it. Hopefully, it should have got restarted now let me give a request. I should get all the products. I think it was not restarted. Let me restart.
And stop and start. Okay, God started now. I'll give a request. I should see all products as a JSON list. Oh, wait, still I'm not getting it. So for consumer get product by name response, and I gave Jason Get Products by name response Yep, I should get a Jason dot body get product by name response and stuff is the check.
Yep. Oh sorry, should be dark products dot stock or the actual product is a repeated element. So to put a star, okay, now again I will race okay it's targeted. Let them do a request I'm getting the same Am I doing something here? No. Exception but why am I getting it here?
Obstacle consume Oh, I see some exceptions here. Ah I think there was an exception here in the logger there's a reason very good. Actually the logger I have done after WebService consumer plus paler productions should be plus plus right for concatenation. So, because There was an error here in the logger expression. The the control came to on the control came to the collar dishonor continue was executed. And that's why I got success with what our payload was before the logger transformer didn't get executed.
Very good. Very good. Actually. It's a very good scenario you saw. So, an expression was wrong here for a logger and there is no handler here. Whatever was the payload before logger that was the output exactly after consume came back to the calling flow here on error continuous.
So this was locked and the control came back to main flow as if nothing has occurred. So what we did was that that means a payload exactly from consume component was returned with success status code, but it was an error. So now I think I've saved it if I give a request I have modified the problem I've actually rectified The problem is no longer Now I use plus plus instead of single plus. So let us see again I'll try to do one request again I got same response to see on the console plus plus payload also giving an error his expression was not correct. Oh, he's I'm concatenating with string payload should be a string but it was something else. You called plus plus function with string and object.
This is a content right. So what I will do is as of now for now to make sure that everything is going fine I remove this concatenation of plus plus payload. Now, this To find I have saved it. And the whole thing really started here in the console to get clarity. I'll give a request. Yeah, now I got the transformer executed and I saw the Jason Thank you Mac.
I should get to Mac products. click on Send. Yep, see I got a list of products. Right I'll see you in next video.