Dragan,
Bugs in the product are just there and there is not much we can do other than avoid the known ones.
When it comes to error handlers, my philosophy is that an error is an unexpected situation, that is the program reached a condition that the programmer did not anticipate ahead of time. The only thing and error handler should do is record the error and attempt to safely shut down the system. Attempting to fix things while in an error condition is asking for trouble, and creating variable that the error handler passes back to teh calling code is also asking for trouble.
The index was supposed to be there right, and it wasn't there right, so why wasn;t it there and what else is also wrong for the same reason. Shutting down immediately and getting a support call will allow yo to diagnose and fix the cause of the problem and not the symptom.