1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Symfony ComponentAdvent Calendar 2023

Day 5

開発時のエラー箇所発見のお手伝い、"ErrorHandler"

Last updated at Posted at 2023-12-04

Symfony Component Advent Calendar 2023の5日目の記事です。

開発時のエラー箇所発見のお手伝い、"ErrorHandler"

ErrorHandlerは、開発時にエラー箇所の特定を容易にするコンポーネントです。

image.png

Symfonyを使っている人であれば、見たことあるエラー画面だと思います。この画面の出力のお手伝いをしているコンポーネントです。Symfony以外でも動作します。

インストール

composer require symfony/error-handler

使い方

Symfonyにはすでに仕込まれているので、意識することないとは思いますが、使うこと自体はとても簡単です。

use Symfony\Component\ErrorHandler\ErrorHandler;

ErrorHandler::register(); // ErrorHandlerの登録

throw new \LogicException('error'); // わざとException

ErrorHandlerを利用しない場合、PHPをコンソールで実行するとこんな感じになります。

PHP Fatal error:  Uncaught LogicException: error in /path/to/error.php:9
Stack trace:
#0 {main}
  thrown in /path/to/error.php on line 9

Fatal error: Uncaught LogicException: error in /path/to/error.php:9
Stack trace:
#0 {main}
  thrown in /path/to/error.php on line 9

これがErrorHandler::register()を仕込んでおくだけで

LogicException {#6
  #message: "error"
  #code: 0
  #file: "./error.php"
  #line: 9
}

こうなります。見やすい。

デバッグモード

上記のような記述で、Web上で例外が起こると、

スクリーンショット 2023-11-30 22.00.59.png

こうなります。これだと開発中はどんなエラーがでたのかがちょっとわかりません。そこで利用するのがDebugです。

use Symfony\Component\ErrorHandler\Debug;

Debug::enable(); // デバッグ用のErrorHandlerの登録

throw new \LogicException('error'); // わざとException

こうすると

スクリーンショット 2023-11-30 22.00.25.png

こうなります。いつもの画面です。

まとめ

今回はErrorHandlerでした。やってることはシンプルなコンポーネントですが、開発時の強い味方です!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?