Like with pretty much everything else, there will be a time when your app would not work as it should. It's normal. It's expected and the even top developers know that it's necessary to build your app to manage these situations properly. That's why when developing, we make sure we handle failure scenarios by carrying out a failsafe measures and/or throwing an error as users really wouldn't be very pleased to see an endless progress bar cycle when behind the scenes, an error has occurred. How well, however, do the error messages we write convey what has happened to the user and inform them of what they have to do to fix it.
Earlier today, I was trying to carry out a transaction on a banking app and it kept failing. This was a problem, of course, but not an altogether strange one because these things happen. What caught my attention though was the error message I was getting: "Error occurred. Please try again later".
Now this wasn't altogether uninformative. It told me that an error had indeed occurred and that I was to give it another shot but there were other questions raised. What had happened? Was it my fault? Was there something I could do to fix it now or was the solution timebound to a future event? Would it definitely work fine if I tried again later?
Maybe it was me thinking as a software developer but the error message did little other than inform me something was wrong. If the error was thrown because I entered a wrong pin, I would never know - and if that was the case, it wouldn't matter if I tried again in an hour, a day or a year, I would keep getting the same error.
And this is pretty common in a whole lot of software - error messages that are not particularly helpful or informative. Even though most users are not familiar with the underlying infrastructure of the app (and really don't care to, if we are being honest), they want to know where the problem is coming from and if trying again multiple times would make any difference.
Now, you don't have to make your error messages entire epistles about how the user's decision to do a transfer to the pizza place at midnight resulted in the failed transaction. Short summaries work just fine. "Transaction failed due to a network error", "Could not complete transaction due to insufficient balance", "You need to change your password to complete this transaction", "This service is currently not available as it has been suspended" are all workable, informative error messages. They may be longer than "Error occurred. Try later" and thus a bit more stressful to think up and write but they would definitely improve your user's experience on your app.
Now go forth and frustrate fewer people with your error messages!