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に保存してる
――くらいかな。あまり関係なさそうだけど。