質問編集履歴

2 質問文の題名も間違えていたので修正。

aaaaaaaa

aaaaaaaa score 481

2016/07/05 11:19  投稿

PDO::ATTR_ERRMODE_EXCEPTIONを使う方法と使わない方法
PDO::ERRMODE_EXCEPTIONを使う方法と使わない方法
データベースに接続するときに何かしらの障害が発生したら、ATTR_ERRMODEがERRMODE_SILENTの場合、DBに接続するたびに
PDO::errorCodeの添え字0から取得できる共通のエラーコードを条件分岐で使い、番号が「00000]でなければエラーとみなすような処理を行います。
ここで疑問です。接続するたびにそのような処理を記述するのは面倒なので例外処理を利用しているのですが、その例外処理の利用法は、
下記のうちどちらの方法がおすすめですか。また具体的にどのような違いがあるのかを教えてください。
ERRMODE_EXCEPTIONで例外を投げる方法
```php
try {
//接続
$dsn = "dbname=aaaa;host=localhost";
$user = "root";
$password = "";
$dbh = new PDO($dsn, $user, $password);
$dbh->query("set names utf8");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
print "接続しました。";
//接続解除
$dbh = null;
} catch(PDOexception $e) {
print "ただいま障害が発生しており大変ご迷惑おかけしております。".mb_convert_encoding($e->getMessage(),'UTF-8','JIS,ASCII,CP51932,SJIS-win');
exit();
}
```
ERRMODE_EXCEPTIONは、使わない方法
```php
try {
//接続
$dsn = "dbname=aaaa;host=localhost";
$user = "root";
$password = "";
$dbh = new PDO($dsn, $user, $password);
$dbh->query("set names utf8");
print "接続しました。";
//接続解除
$dbh = null;
} catch(exception $e) {
print "ただいま障害が発生しており大変ご迷惑おかけしております。";
exit();
}
```
  • PHP

    31206 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • データベース

    1742 questions

    データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

  • データベース設計

    350 questions

    データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

  • 例外

    67 questions

    例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

  • 例外処理

    111 questions

    例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

1 質問文に本来伝えるべき意図とは別の表記を行ってしまったので修正。

aaaaaaaa

aaaaaaaa score 481

2016/07/05 11:13  投稿

PDO::ATTR_ERRMODE_EXCEPTIONを使う方法と使わない方法
データベースに接続するときに何かしらの障害が発生したら、ATTR_ERRMODEがERRMODE_SILENTの場合、DBに接続するたびに
PDO::errorCodeの添え字0から取得できる共通のエラーコードを条件分岐で使い、番号が「00000]でなければエラーとみなすような処理を行います。
ここで疑問です。接続するたびにそのような処理を記述するのは面倒なので例外処理を利用しているのですが、その例外処理の利用法は、
下記のうちどちらの方法がおすすめですか。また具体的にどのような違いがあるのかを教えてください。
ERRMODE_EXCEPTIONで例外を投げる方法
```php
try {
//接続
$dsn = "dbname=aaaa;host=localhost";
$user = "root";
$password = "";
$dbh = new PDO($dsn, $user, $password);
$dbh->query("set names utf8");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
print "接続しました。";
//接続解除
$dbh = null;
} catch(PDOexception $e) {
   print "ただいま障害が発生しており大変ご迷惑おかけしております。".mb_convert_encoding($e->getMessage(),'UTF-8','JIS,ASCII,CP51932,SJIS-win');
   exit();
}
```
ERRMODE_EXCEPTIONは、使わない方法
```php
try {
//接続
$dsn = "dbname=aaaa;host=localhost";
$user = "root";
$password = "";
$dbh = new PDO($dsn, $user, $password);
$dbh->query("set names utf8");
print "接続しました。";
//接続解除
$dbh = null;
} catch(exception $e) {
   print "ただいま障害が発生しており大変ご迷惑おかけしております。".mb_convert_encoding($e->getMessage(),'UTF-8','JIS,ASCII,CP51932,SJIS-win');
   print "ただいま障害が発生しており大変ご迷惑おかけしております。";
   exit();
}
```
  • PHP

    31206 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • データベース

    1742 questions

    データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

  • データベース設計

    350 questions

    データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

  • 例外

    67 questions

    例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

  • 例外処理

    111 questions

    例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る