[PHP-users 24711] 4.x系 fatal errorの捕捉

shima tetuo mlmlml @ lily.freemail.ne.jp
2005年 2月 25日 (金) 01:16:27 JST


tetuoです。

---------------
問題(PHP 4.x系)
---------------
個人的には解決している問題なのですが、PHPで開発をされている方の1つの大き
な悩みではないかと思うのが「fatal error」発生時の対処の仕方かと思います。

1.fatal errorはset_error_handlerでも捕まえられない。
2.fatal errorは発生後、PHPが終了してしまう。

という大きなネックがあると思います。


---------------
解決案
---------------
ずいぶん前にこの解決法を探していて、ここに辿り着きました。
http://www.webkreator.com/php/configuration/handling-fatal-and-parse-errors.html

簡単に説明するとob_startで独自の関数をかまし、その関数内でバッファを読み、
fatal errorに繋がる文字であれば、fatal errorだとして処理をする。
(自分の場合はログを取り、エラー画面を表示させています)


---------------
疑問
---------------
クラスを多用する方なら、オブジェクトになっていない変数にメソッドの呼び出
しをした事が多々あるのではないかと思います。

/*
$fooはオブジェクトではないとする。
メソッド呼び出しが出来ずfatal error。
*/
$foo->method();

このような場合、自分は上のような処置法で解決していますが、皆さんはどのよ
うにこの問題に対処していますか?
もっと簡単にこの問題を回避する方法があるのではないかと思っています。



PHP-users メーリングリストの案内