この記事は「ひとりでカンファレンスふりかえりo0h Advent Calendar 2021」のday-23です。

ひとりでカンファレンスふりかえりo0h Advent Calendar 2021 - Adventar

今日振り返るのは、「PHP8になった今の時代に、PHPの「エラー」「例外」そして「Error」をおさらいしておこう」です。 PHP Conference Japan 2021のCfPに応募し、採択されました。Regular session (25 mins)の枠になります。

PHP8になった今の時代に、PHPの「エラー」「例外」そして「Error」をおさらいしておこう

https://speakerdeck.com/o0h/phperkaigi2021-regular-talk

概要

「PHPにはエラーと例外とErrorがあるよ!」という話があり、概念を整理して把握できるまでは色々とややこしさを覚えるポイントの1つかな?と思っています。

Throwableについてはブログに自分の知っていることや考えをまとめたりもしました。

「\Throwableをcatchしないで」と伝えていく - 大好き!にちようび

自分も何度も参照しているし、「これ読むと良いよ」といって他人に渡す資料は「お前は PHP 7 における Fatal Error / Catchable Fatal Error / Error / ErrorException / Exception の違いを言えるか?」があります。

お前は PHP 7 における Fatal Error / Catchable Fatal Error / Error / ErrorException / Exception の違いを言えるか? - Qiita

また、「エラーと例外」について非常に分かりやすい話も出ており、こちらも何度も人にオススメしたような有難い資料です。

PHPのエラーと例外再入門 / php-error-and-exception

こうした「疑問に答える」系の話は日本語でも存在している中で、まだまだ「普段の開発をしていて混乱する」といった場面や、まして「他人のコードが気になるんだけど書き換えて良いんだろうか?」という際に自信を持って判断できるまでの理解や説明可能な状態には出来ていない・・みたいな状況をチラホラと見かける体感があります。

そこで、「実際の開発において、エラー/Error,Throwable/例外を見かけたらどうする?」「自分がデザインする時にはどうしよう?」というpracticalな視点で話をまとめてみたいな、と思いました。

とりわけ、このタイミングで「エラーレベル」の意味する所を理解する・肌感覚を磨くことについては、PHP8において様々な状況に対して「エラーレベルを引き上げる」という改修が入った&入っていっていることも見据えて、何か価値のあることなのではないか?とも考えました。 あるいは、PHP5->7->8の歴史の文脈の中で「どうして」を紐解くことにも興味があります。「PHPの歴史に目を向ける」という際には、「PHP以外の文化で何があって、そこから何を学んでいるか」についても視野を広げる事になりますから、PythonやJavaといった世界も参照していきます。