Laravelでtry~catchとthrowを実験.Exception処理の動きを理解

Laravelでの例外処理について解説していきます。

Q. try ~ catch 処理とは

下記の記法です。

try {
    // 例外が発生する可能性のあるコード
} catch (Exception $e) {
    // 例外が発生した場合に行う処理
}

例外が発生する可能性がある場合に、
例外が発生すると処理が中断したり・停止することを防ぐために
try{ } で判断して → catch{ } で対処します。

Q. try ~ catch 例外処理を実施してみる

public function testExcetion() {
    try {
        // 例外が発生する可能性のあるコード
        $error = 5/0; // errorが発生する処理を実行
throwする必要有り。
    } catch (Exception $e) {
        // 例外が発生した場合に行う処理
    }
}

この処理を実施した場合、何も発生しません。
本来であれば、$error = 5/0; が実施されると Division by zero error のエラーが発生します。しかし、上記のtry ~ catch 処理の場合は何も表示されません。

それは、tryで例外が発生したものをキャッチして、catch内で処理させています。catch内では、受け取った例外に対して何も扱っていないので、変化無しです。

Q. try ~ catch 例外処理を受け止め

public function testExcetion() {
    try {
        // 例外が発生する可能性のあるコード
        $error = 5/0;
throwする必要有り。
    } catch (Exception $e) {
        // 例外が発生した場合に行う処理
        echo $e->getMessage(); // error messageを取得 (echo で出力)
    }
}

Division by zero error が表示されます。

Q. try は何をエラーと判断しているのか

public function testExcetion() {
    try {
        // 例外が発生する可能性のあるコード
        throw new Exception("error発生です!!!!");
throwする必要有り。
    } catch (Exception $e) {
        // 例外が発生した場合に行う処理
        echo $e->getMessage(); // error messageを取得 (echoで出力)
    }
}

error発生です!!!! が出力されます。

try{}内では、Exception を throwされることをきっかけに検知して、catchへ処理を移します。 (Exceptionは様々なClassあり)