エラー処理


エラーレベルを設定する(error_reporting)

error_reporting()を使用します。引数にエラーレベルを指定します。引数に指定するエラーレベルの定数の説明はこちら

// 戻り値には前に設定されていたエラーレベルが返される。
$prev_error = error_reporting(E_ALL);

// 5.3.0以降推奨されていないため警告が出るようになる
$ary = split(',', "1,2,3,4,5,6");    // => Deprecated: Function split() is deprecated ...

エラーの出力先を指定する(error_log)

error_log($message, $type=0, $destination=NULL)を使用します。第二引数で書き込む先を変えることが出来ます。
type=0 : デフォルトのlogファイルに書き込む
type=1 : destinationに指定されたアドレスにメールする
type=3 : 指定のファイルに書き込む
type=4 : 直接 SAPI(Server API ?)のログ出力ハンドラに送信されます
戻り値には正否が返されます。

echo "type1 res:" . error_log("test type1", 1, "sample@mail.com") . "\n";
echo "type3 res:" . error_log("test type3", 3, "test.txt") . "\n";

例外を投げる(try,catch,throw)

try{}, catch{}, throwを使います。tryの中のthrowを捕捉して、catchで処理をします。

function throwfunc(){
    // 例外を投げる
    throw new Exception("throw func throw");
}

try{
    throwfunc();
    throwfunc();    // こちらが呼び出される前にcatchされるので処理されない。
}
catch(Exception $e){
    echo "catch : " . $e->getMessage() . "\n";    // => catch : throw func throw
}

try,catchの外でthrowした場合エラーになってしまいます。set_exception_handler()に関数の文字列を設定しておくことでtry,catchの外で発生したthrowを捕捉することができます。


// try catchの外で呼び出すとエラーになる
//throw new Exception("try catch の外");    // => Fatal error

function exceptionHandler($e){
    echo "exceptionHandler\n";
}
set_exception_handler('exceptionHandler');

// set_exception_handler()を設定してあるから捕捉される
//throw new Exception("try catch の外");    // => exceptionHandler

自作の例外を作る(Exception)

Exceptionを継承してクラスを作ります。

// 自作例外クラス
class MyException extends Exception{
}
// 通常の例外を投げる
function exceptionFunc(){
    throw new Exception("throw normal exception");
}
// 自作例外を投げる
function myExceptionFunc(){
    throw new MyException("throw my exception");
}

try{
    myExceptionFunc();
}
catch(Exception $e){
    echo "catch : " . $e->getMessage() . "\n";    // => catch : throw my exception
}