I have seen a project, do not remember which it was, which have a very nice approach of how errors are handled. Each error in the product have a uniq id through the whole product and a description. The uniq id is probably a hash of the specific error description. All these "errors" are extracted from product and imported into a web service accessible for anyone. Upon a error / problem in the product the administrator / user is presented with a error id, the description and a shortlink to a web service, something like: Error: e7a562b8 Details: http://www.cendio.com/e7a562b8 The connection to the server failed with reason: unable to resolve address. The uri shows a page with the error details and possible hints of solutions which the user can rank, something in line with: Error description The connection to server failed with reason: unable to resolve address Possible solutions .---- -- - - Make sure that you spelled the server address correctly. ^ 4 Votes '---- -- - - .---- -- - - Verify that your computer have working connection to your network. ^ 2 Votes '---- -- - - .---- -- - - Verify that the you can resolve the FQDN into an address ^ '---- -- - - The solutions are something we are adding over time from support. Let's say we have a support issue, which references error e7a562b8 and the customer get back to us and says he has this specific error / problem but there are no proposed solutions. We help the customer and find his main problem, adds a solution to the error matching the specific error. With a voting system for solution we have data that can be user in BI such as: - Get the most occured error someone would get from ThinLinc - Get the most matching solution for a specific error This feature will provide a self-support platform for customers and offload our actual support over time.
- How should we handle problems which does not have a error id / message defined in code ? - How should we handle problems which is not or can't be handled from our own code, for example session startup on Ubuntu ?