Invision, my favourite tool at the moment, do a great job on Jakob Nielsons usability principle of “error prevention”
Even better than good error messages is a careful design which prevents a problem from occurring in the first place. Either eliminate error-prone conditions or check for them and present users with a confirmation option before they commit to the action.
Are you really sure?
So you’ve spent ages creating something, and you accidentally press delete. Invision tries to make sure you are really, really sure you want to delete it. A bit like a friendly terms and conditions page, but one you actually bother to read.