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あり)