
例外処理とは
例外処理とは、想定できるエラーが起きたときに、あらかじめにその後の処理を記載することで、
正常に処理を続行させていくことを言います。
例えば、データベースが何かの理由で接続できなくなった時・読み込もうとしたファイルが存在しない時など、
ユーザーには特定のメッセージを返して、システム担当者にはログを残したりSlackで通知をしたりすることを
コードで記載することができます。
try {
// 通常の処理
} catch (\Exception $e) {
report($e);
// 例外処理
}
PHP にはデフォルトで Exception という基底の例外クラスが用意されており、広くエラーを除いて拾ってくれます。
また、Laravelのreport関数で発生した例外をログに残してくれます。
例外処理でcatch後に適切な動作をするか確認したい
Laravelプロジェクトで開発を進める時に例外発生処理を記載し、ログを出したい。Slackに通知したい。メールを送りたい。フラッシュで返したい。など色々なケースがあると思います。
catch側の実装は済んだけど、実際にエラーを発生させて確認したい時どうしましょう。
DBをデッドロックさせますか、環境変数を変えますか、LANケーブル抜きますか。
いやいや、そんなに頑張る必要はないです。
最短でcatchへ落とす
色々と話が長引きましたが、以下でcatchに落ちます。
try {
$hage = $hoge;
// 処理
} catch (\Exception $e) {
report($e);
// 例外処理
Log::debug('hagehoge');
}
たまにあるミス(?)
エラーは発生しているのに、catchしてくれないぞという時。catchの後のExceptionに
\が抜けていたら、namespaceの問題で、以下に直すだけで落ちてくれる可能性が高い。かもしれない。
× } catch (Exception e){
○ } catch (\Exception e){