Then when an error occurs, try to only ask the user questions you can't answer programatically. Ideally, your exception handling should already track their current action (saving an invoice), current context (invoice screen), the entity being acted upon(invoice #10013), and all the exception info from the program. If you can't capture this and retrieve it remotely, feed it to your web form (in URL params or whatever) when the user clicks 'report this issue'. Ensure you pay attention to any sensitive data requirements.What is the best way to cater for users reporting bugs ? - Stack Overflow
Then you should only need to ask your users the human questions like - 'How can we best contact you about this issue?' (method / times / etc.), and give them an idea of how long it'll take for them to get a response from a human.
Blogged with the Flock Browser