スクリプトのエラー処理を行うユーザ関数 (
error_handler
)を設定します。定義済のエラー ハンドラまたはエラーの際に
FALSE
を返します。この関数は、実行時の エラー処理をユーザが定義するために使用します。例えば、致命的なエ
ラーを発生した場合や、ある条件のもとに (
trigger_error()
を使用して)エラーを発生する必 要がある場合にデータやファイルを消去する必要があるようなアプリケー
ションがこの場合にあたります。
ユーザ関数の引数は2つ、エラーコードとエラーを記述する文字列です。 PHP 4.0.2
からオプションのパラメータが3つ追加されています。これら は、エラーが発生したファイル名、エラーが発生した行、発生したエラー
のコンテキスト(エラーが発生した場所でのアクティブなシンボルテーブ ルを指す配列)です。
注意 関数名の代わりにオブジェクトへのリファレンスとメソッド名を含む配列 を指定することもできます。(PHP 4.3.0以降)
注意 以下のエラー型はユーザ定義関数では扱うことができません。 : E_ERROR , E_PARSE , E_CORE_ERROR , E_CORE_WARNING , E_COMPILE_ERROR , E_COMPILE_WARNING
以下の例では、エラーを発生することにより内部例外の処理を表示し、
ユーザ定義関数によりこれを処理します。
|
vector a Array ( [0] = 2 [1] = 3 [2] = foo [3] = 5.5 [4] = 43.3 [5] = 21.11 ) ---- vector b - a warning (b = log(PI) * a) b WARNING /b [1024] Value at position 2 is not a number, using 0 (zero) br Array ( [0] = 2.2894597716988 [1] = 3.4341896575482 [2] = 0 [3] = 6.2960143721717 [4] = 49.566804057279 [5] = 24.165247890281 ) ---- vector c - an error b ERROR /b [512] Incorrect input vector, array of values expected br NULL ---- vector d - fatal error b FATAL /b [256] log(x) for x = 0 is undefined, you used: scale = -2.5 br Fatal error in line 36 of file trigger_error.php, PHP 4.0.2 (Linux) br Aborting... br |
PHP の標準のエラーハンドラは完全にバイパスされることに注意して下 さい。
error_reporting()
の設定は影響せず、どの ような場合でもユーザが設定したエラーハンドラがコールされます。た だし、この場合でもハンドラで
error_reporting()
のカレントの値を読み、適当に動作させることは可能です。エラーを発 生した命令の前に
@ エラー制御演算子
が付加されている場合、この値は 0 となることには注意を要し ます。
ユーザハンドラ関数は、要すれば
die()
をコール する責任があることにも注意を要します。エラーハンドラ関数がリター
ンした場合、スクリプトの実行は、エラーを発生した命令の次の命令に 継続されます。
注意 (ファイルアップロードのように)スクリプトが実行される前にエラーが発 生した場合、カスタムエラーハンドラはコールされません。 これは、その時点では登録されていないためです。
error_reporting()
,
restore_error_handler()
,
trigger_error()
,
user_error()
も参照下さい。