Write descriptive error messages.
Check for syntax errors before shipping! If your application is written in an interpreted language or a scripting language, your users can end up getting syntax errors if you don’t test it well.
Write helpful error messages. In the following example, what exactly is the difference between “Abort” and “Fail”? Also, it is better to specify what needs to be done to recover from the situation — for example, “Insert disk” instead of “Retry”.
Don’t contradict yourself. When throwing an error back to the user, the description should support why an exception happened, not contradict it.
Don’t try humour. If yours is a “critical” application, your user will not laugh when an exceptional situation occurs!