There's no difference between 'an ordinary error' and an exception. I think the issue is that PHP is mixing two kinds of error reporting. The return status code for the more traditional non OO APIs and exceptions for the rest. If you look at other languages, like say Java, you'll see they don't use the return status code at all. They just use exceptions. An exception is where code has operated abnormally. I.e. an error has occurred. Exceptions are the ideal mechanism for reporting a problem in DB access.