例外処理
例外処理とは、予期しない結果が発生した場合に強制的に別の処理をすることで、たとえばデータベースに接続できない、数値計算でゼロ除算した、ユーザーの入力値が不正の場合など、正常で無い事が起きた場合にそれを復旧する処理のことです。使用するメリットとしては、エラーの対処が簡単になります。
・tryブロック、throw文、catchブロック
「例外処理」は、エラーが起こりそうな個所を「try」して、トライ中にエラーが発生したら「例外」を「throw(投げる)」してトライを中断し、投げられた「例外」を「catch」して「エラー時用処理」を実行する、というものです。
例外が発生しなければ、catchブロックの処理は行われません。
catchブロック内では例外クラス(Exceptionクラス)に例外のオブジェクトが格納されており、ExceptionクラスのgetMessageメソッドを呼び出してエラーメッセージを表示します。
<?php try { $iNum1 = 1; $iNum2 = 0; if ($iNum2 == 0) { throw new Exception("0で割れないよ。"); } $ans = $iNum1 / $iNum2; echo $iNum1.'/'.$iNum2.'='.$ans; } catch (Exception $e) { echo $e->getMessage(); } ?>
1. 例外が発生する可能性のある処理を囲む(tryブロック)
2. 例外を発生させる(throw new Exception)
3. 例外発生時に行う処理を囲む(catchブロック)
例外クラスのドキュメントです
SQLの例外処理
PDOを利用したDB接続時にはPDOExceptionクラスを使用します。
PDOExceptionは、接続に失敗した場合などに投げられる例外です。PDOException自体は接続/切断以外にもいろいろな場所から投げられるので、開発者は適切な例外処理を記述しやすくなります。
<?php try { $db = new PDO('mysql:host=localhost;dbname=sql_ex;charset=sjis', 'root', 'admin'); } catch (PDOException $e) { exit('データベースに接続できませんでした。' . $e->getMessage()); } ?>