データベースに接続するときに何かしらの障害が発生したら、ATTR_ERRMODEがERRMODE_SILENTの場合、DBに接続するたびに
PDO::errorCodeの添え字0から取得できる共通のエラーコードを条件分岐で使い、番号が「00000]でなければエラーとみなすような処理を行います。
ここで疑問です。接続するたびにそのような処理を記述するのは面倒なので例外処理を利用しているのですが、その例外処理の利用法は、
下記のうちどちらの方法がおすすめですか。また具体的にどのような違いがあるのかを教えてください。
ERRMODE_EXCEPTIONで例外を投げる方法
php
1try { 2 3//接続 4$dsn = "dbname=aaaa;host=localhost"; 5$user = "root"; 6$password = ""; 7$dbh = new PDO($dsn, $user, $password); 8$dbh->query("set names utf8"); 9 10$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 11 12print "接続しました。"; 13//接続解除 14$dbh = null; 15 16} catch(PDOexception $e) { 17 print "ただいま障害が発生しており大変ご迷惑おかけしております。".mb_convert_encoding($e->getMessage(),'UTF-8','JIS,ASCII,CP51932,SJIS-win'); 18 exit(); 19} 20 21
ERRMODE_EXCEPTIONは、使わない方法
php
1try { 2 3//接続 4$dsn = "dbname=aaaa;host=localhost"; 5$user = "root"; 6$password = ""; 7$dbh = new PDO($dsn, $user, $password); 8$dbh->query("set names utf8"); 9 10print "接続しました。"; 11//接続解除 12$dbh = null; 13 14} catch(exception $e) { 15 print "ただいま障害が発生しており大変ご迷惑おかけしております。"; 16 exit(); 17} 18
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/05 03:14
2016/07/05 05:47