<?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()を書いて自衛するしかない。