Currently i can't find a way to catch all of the error.
I think vxml error is find as i can catch it via HotEvent and has Exit state to continue the flow like transfer to CSR.
But the problem is how to catch global Java exception for example, stock element like SayItSmart or custom class that throw exception when invoke.
Is it possible to Catch all error? Set Error Element is not the choice as it has no exit state.
Actually, Set Error Element is the right answer. It will catch all uncaught exceptions and return the call to ICM (go to CSR if you like). I find it helpful to set a special value in caller_input or one of the other FromExtVXML fields to indicate this is what happened and handle it appropriately in the ICM script.
It depends what version of Studio/CVP you have. In Studio 10.5 they've added an Events tab to every element (and to the Start of Call) so you can catch Java exceptions and follow an exit state to provide code within the application.
If you're using something older than 10.5 then there not many options
1) use an Error Element so at least you can return information to ICM about the caller, where to queue, etc
2) Use Java to extend Cisco's most troublesome elements (like the Voice Elements that might cause Say it Smart exceptions to occur) to execute their runtime code within a try/catch block. You could add an exit state to follow if you catch an exception.
3) Upgrade to 10.5
So look like if CVP version is lower than 10.5 best choice is
1. Use Error Element and select Queue from ICM in case of Cisco Exception (SayItSmart etc.).
2. Catch all Java Exception in source code and have a Decision Element to check whatever it's error or not.
A little pain but it can be done ...
Yes, you can try to pre-process data to prevent getting some of the Say
it Smart exceptions.
For example, before executing a Digits Say it Smart, check the variable
exists and doesn't contain *