Design Principles
First and foremost, if a problem occurs, it should fail gracefully if possible. This means that the product should not be brittle. Functions should be fail-safed by including fall back actions and retries. Displaying errors to the user should only happen in exceptional cases where the prior actions repeatedly fail.