【PHP】throwしたエラーをtry catchして処理続行

DBエラーとなったときにフレームワーク(framework)でエラーハンドルして独自のエラー画面を出力していたのを「予期せぬエラー」で処理続行できるようにしたメモ。

フレームワークではset_error_handlerを使って例外をthrowしているので、基本はこれをtry catchすればいい。

ただ注意しないといけないのが、例外処理のときにDBの接続を初期化しないと、次のクエリが実行できない。

この辺は使用しているO-Rマッピングライブラリ(DB接続ライブラリ)に依存するかな。

try {
  $db->save();
} catch (Exception $e) {
  $db->close();
  echo $e->getMessage();
}

イメージではこんな感じ。