Code Smell 97 - Error Messages Without Empathy

Maxi Contieri - Oct 27 '21 - - Dev Community

We should take special care with error descriptions for the users (and ourselves).

TL;DR: Use meaningfull descriptions and suggest corrective actions.

Problems

  • The Least Surprise Principle

Solutions

  1. Use declarative error messages

  2. Show clear exit actions

Context

Programmers are seldom UX experts.

We also underestimate the fact we can be on both sides of the counter.

Sample Code

Wrong

alert("Cancel the appointment?", "Yes", "No");

//No consequences
//Options not clear
Enter fullscreen mode Exit fullscreen mode

Right

alert("Cancel the appointment? \n" +
      "You will lose all the history", 
      "Cancel Appointment", 
      "Keep Editing");

//Consequences are clear
//Choice options have context
Enter fullscreen mode Exit fullscreen mode

Detection

[X] Manual

We need to read all exception messages in code reviews.

Tags

  • Exceptions

  • UX

Conclusion

We need to think in our end users when raising exception or showing messages.

Credits

Photo by visuals on Unsplash


While it is a known fact that programmers never make mistakes, it is still a good idea to humor the users by checking for errors at critical points in your program.

Robert D. Schneider


This article is part of the CodeSmell Series.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .