PHP

__toString()でExceptionが発生すると死ぬ

More than 5 years have passed since last update.
<?php
class Hoge {
  function __toString() {
    throw new Exception;
  }
}

try {
  $hoge = new Hoge;
  echo $hoge;
} catch (Exception $e) {
}

try ~ catchで拾っているので動作しそうなコードに見えるけれど、実行すると
PHP Fatal error: Method Hoge::__toString() must not throw an exception
となって死ぬ。

Exceptionぐらい発生してもええやん!!と思うのだが実装が難しいのだとかナントカ。
https://bugs.php.net/bug.php?id=53648

とりあえず今の段階では__toString()の内部にtry {} catch()を書いて自衛するしかない。