PHPでvar_dump()を使うと例外をcatchできないケースがある?

PHPでvar_dump()を使うと例外をcatchできないケースがある?

 例によって原因はよく分かりませんが、ずっとハマってました。。。

  • 通常は var_dump() したあとでも throw new Exception() したものを try{} catch(){} で捕捉できる
  • 同じページに複数回アクセスした場合は、何故かvar_dump()したあとの例外を捕捉できない
    • print_r()やecho var_export() による出力なら問題は起こらない
      • (訂正)print_r()やvar_export()でも問題が起こった
    • var_dump()しても問題ないケースもある。
      • var_dump()するものの中にExceptionのサブクラスがあると問題が起こるのかも。

 再現する最低限のコードを作ってみるべきとは思うのですが、「PHP業界では有名なバグなんじゃね?」という気もするので放置予定。

追記

 Exceptionおよびそのサブクラスをvar_dump()等してると、それ以降が実行されない可能性があるっぽい。

 例外をキャッチできないとかそういうレベルではなかった。

 念のために環境を書いておくと、

  • PHP Version => 5.2.13
  • セッション有効(session_start() している)
  • session_set_save_handler() でDBに保存してる

――くらいかな。あまり関係なさそうだけど。