simonsimcity at gmail dot com is wrong, you can throw exceptions in this but it will wrap with another exception so his example outputs
PHP Fatal error: Uncaught exception 'RuntimeException' with message 'It failed!' in -:8
Stack trace:
#0 [internal function]: Foo->jsonSerialize()
#1 -(16): json_encode(Object(Foo))
#2 {main}
Next exception 'Exception' with message 'Failed calling Foo::jsonSerialize()' in -:16
Stack trace:
#0 -(0): json_encode()
#1 {main}
thrown in - on line 16
PHP 5.4.39