Lazy developers throw exceptions, good developers return errors. Exceptions should be exceptional. I'll use URL to this bug in my next comment-holywars to prove this point. Yes, it takes much less code to throw an exception in hope some code will catch it, but while compiler (not runtime) doesn't check it - this technique is not safe. So we should return errors, check them and handle - sometimes it means returning er…
Crashing a program is often safer for unexpected conditions than hoping your error handling will recover from it? Have you tested every combination of state + error and made sure your app is robust for each situation?
2) Yes, it's not so difficult. Writing tests, for example, also takes time - it's not a reason to don't write tests.