読者です 読者をやめる 読者になる 読者になる

PHPで安全に例外を投げる方法

PHP

ただの例外じゃユーザが補足できないし、かといって、あらゆる例外シチュエーションを自分で定義するのも、それはそれでユーザのAPI学習負担を高めてしまう。なので、標準の例外、たとえばRuntimeExceptionを投げたい。でも、PHP5.2(だったと思う)までは、SPLを外してPHPをインストールすることが可能らしいので、場合によってはRuntimeExceptionはないかもしれない。

いまのところ(4は滅んだけど普通5.3以上にはなっていない)、どこでも動くライブラリを書くなら、適切な方法はこんな感じ。

<?php
$exclass = class_exists('RuntimeException') ? 'RuntimeException' : 'Exception';
throw new $exclass("実行環境おかしいんじゃね?");
?>

これ、関数にすることはできない。例外がnewされたコード行が例外の発生源になって、トレースしたときみんなその関数から発生することになるから。

$arguments->caller いや、ないない。