全てのクエリにtry/catchを入れる必要はありません。むしろ、入れないほうがよいですね。
理由は、例外を生成する場合というのは、シンタックスのエラーやデータベースの問題など致命的なエラーであることがほとんどだからです。
例を挙げてみます。
lang
1try {
2 $stmt = $db->prepare('SELECT * FROM hoge');
3 $stmt->execute();
4 $foo = $stmt->fetchAll();
5 } catch (Exception $e) {
6 die("このクエリでエラーが発生しました!");
7}
このクエリは、エラーメッセージを表示しているだけで、エラーが起きたときの処理が何もありません。エラーが起きた場合にとまってしまうだけのtry/catchはあまり生産性がありません。
一般的には、クエリの例外をキャッチして取り扱うべき時は、クエリが機能しなかったときに何かを行いたいときに限ります。
例:
lang
1// ファイルのアップロードを扱います。
2try {
3 $stmt = $db->prepare('INSERT INTO hoge (ID, name) VALUES (?, ?)');
4 $stmt->execute(array(1, 'hoge/fuga/foo.txt'));
5 } catch (Exception $e) {
6 unlink('hoge/huga/foo.txt');
7 echo $e->getMessage();
8}
例外ハンドラを書いて、本番環境で発生したデータベースエラーのログをしたり通知したりして、例外トレースではなくユーザにフレンドリーなエラーメッセージを表示させましょう。
方法は以下を参照にどうぞ!
http://php.net/manual/ja/function.set-exception-handler.php
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。