ERROR MESSAGES are the most critical interactions between the user and the rest of the system. They happen when communication between the user and the system is near the breaking point.
instructions are ineffective at preventing error. Users tend to assume that interfaces will work in line with their past experience
Whatever the cause, systems should be tolerant of errors. You can facilitate this by providing multiple levels of undo to all actions—and, in particular, actions that have the potential to destroy or amend users' data.
Whichever approach you take, most errors are systematic—the result of misunderstandings between the user and the software. Understanding how users think, interpret information, make decisions, and input data will help you debug the interactions between your software and your users.