UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#077 PHP のtry catchに関して

記入日:2023-03-26 編集日:2023-03-26

PHP のtry catchに関して

この記事を読むと(約5分)
PHP のtry catchに関して基本的な考え方がイメージできます。

PHP のtry catchに関して

PHP の TRY-CATCH 文は、プログラマーがエラーをキャッチし、エラー処理を行うための構文です。TRY-CATCH 文は、以下のような形式で書かれます。

try {
  // 例外を発生させる可能性のあるコード
} catch (Exception $e) {
  // 例外をキャッチして処理するコード
}

TRY ブロック内のコードが実行されると、例外が発生する可能性があります。例外が発生した場合、プログラムの制御は CATCH ブロックに移動します。CATCH ブロックは、発生した例外をキャッチし、処理を行います。

例外は、Exception クラスを継承するクラスによって生成されます。例外を発生させるには、throw 文を使用します。例外を発生させる例を以下に示します。

function divide($numerator, $denominator) {
  if ($denominator == 0) {
    throw new Exception('Division by zero.');
  }
  return $numerator / $denominator;
}

try {
  echo divide(10, 0);
} catch (Exception $e) {
  echo 'Caught exception: ',  $e->getMessage(), "\n";
}

上記の例では、divide 関数が 0 での割り算を試みた場合、例外が発生します。TRY ブロック内で divide 関数を呼び出しています。0 で割ろうとしているため、例外が発生します。例外が発生した場合、CATCH ブロックでメッセージが表示されます。

TRY-CATCH 文を使うことで、プログラマーは例外をキャッチし、適切なエラー処理を行うことができます。

 

$e->getMessage()に関して

$e->getMessage()は、例外オブジェクトが保持するエラーメッセージを取得するためのメソッドです。TRY-CATCH 文でキャッチした例外オブジェクトは、catch ブロックの引数として指定された $e 変数に格納されます。

例外が発生した場合、例外オブジェクトにはエラーメッセージやその他の情報が含まれています。この情報を取得するには、例外オブジェクトに対してメソッドを呼び出す必要があります。getMessage() メソッドは、例外オブジェクトが保持するエラーメッセージを返すために使用されます。

例えば、以下のような例外が発生した場合、例外オブジェクトにはエラーメッセージが格納されます。

try {
  $file = fopen('nonexistent_file.txt', 'r');
} catch (Exception $e) {
  echo $e->getMessage();
}

上記の例では、存在しないファイルを開こうとしています。この場合、fopen() 関数は false を返し、E_WARNING レベルの例外が発生します。TRY-CATCH 文でこの例外をキャッチし、エラーメッセージを取得して表示しています。

getMessage() メソッドは、エラーメッセージ以外にも例外オブジェクトが保持する情報を取得するために使用されることがあります。例えば、getCode() メソッドを使用すると、例外オブジェクトが保持するエラーコードを取得することができます。

 

PDOの際のtry catchに関して

PDO(PHP Data Objects)は、PHP でデータベースにアクセスするためのオブジェクト指向のデータベースアクセスレイヤーです。PDO を使用してデータベースにアクセスする場合、TRY-CATCH 文を使用して例外をキャッチすることが推奨されます。

PDO には、データベース操作に失敗した場合に例外をスローするオプションがあります。これを有効にすると、例外が発生する可能性があるすべての PDO 関数呼び出しで例外がスローされます。

以下は、PDO を使用して MySQL データベースに接続する例です。

try {
  $dbh = new PDO('mysql:host=localhost;dbname=mydatabase', 'username', 'password');
} catch (PDOException $e) {
  echo 'Connection failed: ' . $e->getMessage();
}

上記の例では、PDO() コンストラクタで MySQL データベースに接続しようとしています。接続に失敗した場合、PDOException 例外がスローされます。TRY-CATCH 文でこの例外をキャッチして、エラーメッセージを表示しています。

以下は、PDO を使用してデータベースからデータを取得する例です。

try {
  $dbh = new PDO('mysql:host=localhost;dbname=mydatabase', 'username', 'password');
  $stmt = $dbh->prepare('SELECT * FROM users WHERE id = :id');
  $stmt->bindParam(':id', $id);
  $stmt->execute();
  $result = $stmt->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
  echo 'Database error: ' . $e->getMessage();
}

上記の例では、prepare() メソッドを使用して SQL ステートメントを準備し、bindParam() メソッドを使用してパラメータをバインドしています。その後、execute() メソッドを使用してステートメントを実行し、fetch() メソッドを使用して結果を取得しています。これらの関数のいずれかが失敗した場合、PDOException 例外がスローされます。TRY-CATCH 文でこの例外をキャッチして、エラーメッセージを表示しています。

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。