👋

ちょいハマったCaught App\FugaException is not an exceptionの原因

2023/03/29に公開

PHPStanでCaught App\FugaException is not an exceptionのエラーメッセージが出て少しハマったので紹介します。

エラーメッセージ的には例外クラスではないクラスをcatch機構でキャッチしようとしていて出るエラーっぽいのですがFugaException自体はExceptionクラスを継承したクラスなのでそのはずは無いのですが調査した結果以下の事が分かりました。

原因

class_alias()関数によって元の例外クラスが認識されていなかった。

class_alias('HogeException', 'FugaException')

のでalias名を使用せずに元々の例外クラス(上記だとHogeException)を使用することで解決しました。
PHPStanは静的検査しているので、このclass_aliasを使用している部分を認識させればalias名の例外クラスも使用できるのではなかろうでしょうか。

Discussion