An error that is return by value and not test immediately may lead to complicated crash later. An exception not catches properly will be detected immediately, and catching everything is not a good practice. At some point, a programmer that do not wants to read the documentation will never do a good job, either the error is a returned value nor some throw object.