In software, don't ever tell a user that an "unknown error" has occurred. It does nothing but hurt the relationship between user and software.
This weekend I upgraded our iPad and my wife's iPhone4 to iOS5. The iPad went super smooth other than taking forever to download the update. The iPhone update did not go nearly as smooth. After downloading the update, backing up the iPhone, and erasing the flash, iTunes errored out with an "unknown (14) error." There was a nice link provided to an Apple knowledge base article telling me to try another USB port, reboot, or update iTunes (again? I just did!).
Lacking from all of this was any indication of what the heck caused the error!
Clearly, iTunes knows what caused the error, it raised an error message because of some event happening in a way that wasn't expected. But I have no idea what that event was so that I can try to prevent it from happening again or so I can write a bug report. It also left the iPhone in an uninitialized state, requiring a restore (which in itself was over an hour in duration).
Don't ever tell me that an "unknown" error has occurred. Either just tell me that "an error has occurred preventing" a task from completing or tell me what the heck the error was! The "UNKNOWN" part of the error is the most frustrating part, then Apple kicked me when I was down by providing a knowledge base article with stupid answers that didn't provide any insight into what the problem actually was. Yeah, I've used Windows before, rebooting is the knee jerk reflex, I don't need to be told that.
And to top it all off, iOS5 is noticeably slower than iOS4 was on both the iPad and iPhone4. The updated features are almost unnoticeable but the slowness is easily seen. Overall, I'm unimpressed.