I am trying to create a generic flow to retry a node when there is an exception thrown. Can someone try to help me?
Have a look at the
catch node. It is able to intercept exceptions (as long as they are correctly coded in the node that produces them) and trigger a flow.
Firstly thanks for replying...
(as long as they are correctly coded in the node that produces them) --
I am trying to get a point in the above line which you said. Do we need to code in the node to throw an error should an error occur in a node? If so, what about the nodes that we download from palette?=
When a node may hit an error, it should trap it using try/catch or the equivalent for promises. For Node-RED to be able to handle errors gracefully, including using the catch node, the node should issue a
node.error and include the error object as the 2nd argument (the first being an error description string).
A well coded node will include that.
Of course, there are some errors that shouldn't be trapped and those are ones that would leave the node-red runtime in an uncertain state. By-and-large though, errors should be trapped and passed gracefully.
So no, you don't need code in your flow in order to handle errors. An error occurring in a function node for example, should not generally be able to crash node-red as function nodes use a node.js VM to run in.
However, if a node that you use encounters an error and has prepared for it as described, you can use a
catch node to detect the error and start a different flow to handle it.
Nodes downloaded from the palette should be well coded if they have followed the documentation. But we all make mistakes and some people don't read documentation. So no guarantees I'm afraid.