PHP アプリケーションで PDO MySQL ドライバーを使用していますが、モデルの 1 つで次のようにしています。
public function getAllUsers() {
$this->st = $this->db->query('SELECT name FROM users');
$this->st->setFetchMode(PDO::FETCH_OBJ);
$users = array();
while($row = $this->st->fetch()) {
array_push($users, $row->name);
}
return $users;
}
$this->db
親クラスから継承されたデータベース ハンドルです。問題は、何らかの理由$this->db
で有効なデータベース オブジェクトでない場合、次の致命的なエラーが発生することです。
非オブジェクトでのメンバー関数 query() の呼び出し
これは予想されることですが、エンドユーザーにとって簡単にするために、メソッドを try-catch ブロックでラップしたり、エラーチェックを実行したりしたくありません。どうすればその致命的なエラーをキャッチできるのか疑問に思っています。代わりに例外をスローします (アプリケーション全体で例外を使用します)。
このような場合にのみ例外をスローする PDO オプションはありますか?
編集:再読して、継承ツリーのさらに上のtry-catchブロックにラップされた多くのコードがあることを追加する必要があるため、これが致命的なエラーではなく例外を生成した場合、それをキャッチして終了することができますアプリケーションを優雅に。