Komunikując się z jakąkolwiek bazą danych używamy driverów, one są tak genialne że wyrzucają nam wyjątki. Rozchodzi mi się o sens wyłapywania wyjątku przy każdym zapytaniu. Po dłuższym zastanowieniu doszedłem do wniosku, że to nie ma sensu. W przykładach posłużę się MongoDB.
//w ciele wrappera/adaptera mamy utworzenie klienta Try{ $this->db = new MongoClient(); }catchMongoConnectionException $e){ ... } //gdzieś w kodzie //pobieramy gdzieś listę użytkowników Try{ $usersCursor = $this->db->myDB->collections->find() }catch(MongoCursorException $e){ ... } //chcemy pobrać informacje na temat użytkownika Try{ $usersCursor = $this->db->myDB->collections->findOne($query) }catch(MongoCursorException $e){ ... }
Takie łapanie błędów ma sens tylko w fazie debugowania jeżeli zapytanie nie działa tak jak chcemy. Jeżeli nasze zapytanie zadziała raz, to nie ma szans, żeby nagle przestało działać i wyrzucać wyjątki. Dlatego jedynym miejscem gdzie wystarczy złapać wyjątek jest:
Try{ $this->db = new MongoClient(); }catchMongoConnectionException $e){ ... }
Mylę się?