【PHP】try catch
初心者向け基礎

今回は例外処理といわれているtryとcatchについて、私がデータベース接続の時に書いたものを例に説明していきます。また、難しいところは省いていきます。

今回はサンプルとして以下の設定とします。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
データベースのURL:sample.net
データベース名:sample
ユーザー名:user
パスワード:1234
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

スポンサーリンク




基本

それでは tryとcatchのマニュアルをみてみましょう。
PHP 例外処理マニュアル

スクリーンショット 2015-06-09 22.57.09

マニュアルではtryとcatchを文章にして定義しよいるようですね。

要約としてはtryで起きたエラーをcatchで処理していくといった感じでしょうか。この文章のままではまったくわかりにくくて大変でした。

ページ下部にはコードは書いてあるものの、やはり初心者の私は困りました。ですので、いらない部分は省きに省いて、実行できるところまでやっていきます。

実行してみよう

それでは私が実際に利用した tryとcatchの使い方を解説していきます。

正常時

[php]
<?php
$dsn = ‘mysql:host = sample.net; dbname = sample’;
$user = ‘user’;
$password = ‘1234’;

try{
//データベースに接続
$dbh = new PDO($dsn, $user, $password);
}
catch (PDOException $e) {
//エラー表示
var_dump($e->getMessage());
exit;
}
echo "hello";
?>
[/php]
※データベースの接続方法に関してこちらの記事を御覧ください。
【PHP】データベースへの接続方法

上のコードではデータベース接続部分をtryで囲っています。このtryの中での処理でエラーがでると、catchの囲いの中の処理に移ります。

エラー表示の部分を見てみると、var_dumpが()内のものを出力する関数と、その後にはexitが記述されており、このphpの処理を終了するようになっています。

よって、try内でエラーが起きcatchに行くと、var_dumpの処理とexitの終了の処理が行われるわけです。

このままの状態ですとデータベースの情報がすべて揃っていますので、catchには映らず、その下のechoのhelloが出力されます。

スクリーンショット 2015-06-09 23.34.44

エラー時

それではエラーを起こすコードを書いてみます。
[php]
<?php
$dsn = ‘mysql:host = sample.net; dbname = sample’;
$user = ‘user’;
$password = ‘1234’;

try{
//データベースに接続
$dbh = new PDO($dsn, $user, $pass );//←ここ!!
}
catch (PDOException $e) {
//エラー表示
var_dump($e->getMessage());
exit;
}

echo "hello";
?>
[/php]
ここでは「//データベースに接続」の部分の$passwordと書いていたところを$passと空の変数を配置しました。

これでデータベースには接続できないのでエラーが起こるはずです。では実行してみます。
スクリーンショット 2015-06-09 23.28.04
実行結果は先ほどのhelloとは違い、なんかよくわからない英語が出てきましたね。これはエラーしたということです。

echoの処理が始まる前にexitでPHPの処理を終了させたため、helloが出てきていません。

また、赤枠を見ていただくとわかるかもしれませんが、空の変数をパスワードの位置に配置したため、パスワードがありませんというような英語が書いてありますね。

これでしっかりと機能しているということがわかります。

まとめ

エラー処理の難しい部分はすべて省いて書きました。初心者の方はまず仕組みを知っていただいてから深く勉強していきましょう。

また、データベースに接続するときには必ず例外処理を書いておくことをお勧めします。

接続していないのにいろいろな処理を書いてはエラーが続きますので、しっかりと書きましょう。

ここまで読んでいただきありがとうございました。ぜひ他の記事も読んでみてください。

byたくじろう

スポンサーリンク

スポンサーリンク



シェアする

  • このエントリーをはてなブックマークに追加

フォローする