For a call coming in from the PSTN that is under the control of survivability which then encounters an error, the End node is probably the best thing to use as the failed route (as Hari implies, this will be seen in the Router Log Viewer as a failure) goes back to the ingress gateway and survivability handles it, typically playing "critical_error.wav".
For a call coming in from the UCM routing client, an error should probably just Release the call.
The Release node is a perfectly valid node to use when there is no error - say the contact center is closed and you play the closed message. Then use the Release node to drop the call. On this point I disagree with Hari - no busy tone is sent. The call simply ends. There is no error, so don't use an End node.
The job of the Router (and therefore the Routing Script) is to return a label to the Routing Client. If you use an End node, you have essentially failed the route. If you use a Release you have not failed the route, even though you did not return a label to the Routing Client.
Use the Release Call node for initial overflow conditions. It is supported as a post route from the Cisco Unified Communications Manager. Do not use this node if the call has already received ringback tone or announcements or music. The call is given busy tone for 30 seconds before it is disconnected on the Cisco Unified Communications Manager. No answer supervision is returned for this call because it is not connected to a CTI port. This means that no charges will be accrued for this call.
To be honest I have never read that before, and I have no idea what it means.