この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:2
ページ更新者:guest
更新日時:2026-05-15 03:52:15

タイトル: try catchで全てのエラーを拾う方法
SEOタイトル: 【PHP】try catchで全てのエラーを拾う方法

この記事の要点
  • PHP / Laravel で try/catch (\Exception $e) ですべてのエラーを拾えるとは限らない
  • 理由: PHP 7+ では ExceptionError の継承が分かれており、ErrorException では補足できない
  • 対処1: Throwable で catch(PHP 7+ の共通スーパー)
  • 対処2: catch (\Throwable $e) または catch (\Exception | \Error $e)

 

誤った書き方

try{
    $this->reportService->main();
} catch (
Exception $ex) {
    Log::error("Unexpected Error reportService! " . $ex->getMessage());
}

Exceptionだと実は全てのエラーを拾うことが出来ない。

PHPでは大きく分けてExceptionErrorの二種類がある。

上記の書き方だとUndefined propertyといったErrorを拾うことはできない。

 

正しい書き方

try{
    $this->reportService->main();
} catch (
\Throwable$ex) {
    Log::error("Unexpected Error reportService! " . $ex->getMessage());
}

上記の様に「\Throwable」と記述することで全てのエラーをキャッチすることが可能となる。