In my mind, errors are divided into two categories. Expected errors, which are part of normal operation, aren't the developer's fault, and should be handled. Unexpected errors are the developer's fault, likely indicate a bug, and are allowed to crash.