カテゴリ: PHP 更新日: 2025/12/13

PHPのtry-catchの使い方をやさしく解説!初心者でも安心の例外処理入門

PHP の try-catch を使った例外処理
PHP の try-catch を使った例外処理

先生と生徒の会話形式で理解しよう

生徒

「PHPでエラーが出たときに、プログラムが止まらないようにする方法ってありますか?」

先生

「あるよ。PHPにはtry-catchという仕組みがあって、エラーが起きたときにプログラムが止まらないように処理を分けられるんだ。」

生徒

「それってどういう仕組みなんですか?まったくイメージができません…」

先生

「じゃあ、失敗しても安心できるような身近な例で説明しながら、try-catchの使い方を学んでいこう!」

-

1. PHPのtry-catchとは?初心者にもわかりやすく解説

1. PHPのtry-catchとは?初心者にもわかりやすく解説
1. PHPのtry-catchとは?初心者にもわかりやすく解説

PHPのtry-catch(トライキャッチ)は、プログラム中でエラー(正確には「例外(れいがい)」と呼ばれる)を安全に処理するための方法です。

たとえば、パソコンでファイルを開こうとしたときに、そのファイルが存在しなかったらエラーになりますよね。そのままにしておくとプログラムが途中で止まってしまいます。

そこで「もしエラーが起きたら、別の処理をしてあげるよ!」と指示を出すのがtry-catchの役割です。

tryの中に「試したい処理」、catchの中に「エラーが出たときの対応方法」を書きます。

2. try-catchを使ったPHPの基本コード

2. try-catchを使ったPHPの基本コード
2. try-catchを使ったPHPの基本コード

まずはシンプルな例を見てみましょう。わかりやすいように、「ゼロで割り算をしてしまう」というエラーを使います。


<?php
try {
    // 0で割るとエラーになる
    $result = 10 / 0;
    echo "結果は: $result";
} catch (DivisionByZeroError $e) {
    echo "エラーが発生しました: " . $e->getMessage();
}
?>

DivisionByZeroErrorは、「ゼロで割ってはいけません!」というエラーを表すクラスです。

$e->getMessage()は、エラーの内容(メッセージ)を取り出すための命令です。

3. tryとcatchはそれぞれ何をするの?例えで理解しよう

3. tryとcatchはそれぞれ何をするの?例えで理解しよう
3. tryとcatchはそれぞれ何をするの?例えで理解しよう

プログラムの処理を料理に例えてみましょう。たとえば「電子レンジで料理を温める」という作業があるとします。

  • try:電子レンジで料理を温めてみる
  • catch:爆発したら、掃除して片付ける

つまり、「問題がなければそのまま処理」、「問題があれば別の対応をする」という流れがtry-catchです。

4. 実際にエラーが起きるとどうなるか?

4. 実際にエラーが起きるとどうなるか?
4. 実際にエラーが起きるとどうなるか?

さきほどのコードを実行すると、ゼロで割り算をしたためエラーが出ますが、catchの中の処理が実行されます。


エラーが発生しました: Division by zero

もしtryだけでcatchがなかったら、プログラムはその場で止まってしまいます。

-

5. もっと身近な例でtry-catchを使ってみよう

5. もっと身近な例でtry-catchを使ってみよう
5. もっと身近な例でtry-catchを使ってみよう

今度は、「指定したファイルがなかったとき」の処理をtry-catchでやってみます。


<?php
try {
    $content = file_get_contents("data.txt");
    echo $content;
} catch (Exception $e) {
    echo "ファイルが見つかりませんでした。";
}
?>

file_get_contentsは、ファイルの中身を読み取る関数です。もしdata.txtが存在しない場合、エラーになります。

でもcatchで処理しているので、「ファイルがない場合でもプログラムが止まらずに動き続ける」ことができます。

6. try-catchの使いどころと注意点

6. try-catchの使いどころと注意点
6. try-catchの使いどころと注意点

try-catchは、主に以下のような場面で使います:

  • ファイルが存在しない可能性がある
  • データベースに接続できないとき
  • 外部サービスとの通信エラーが起きるかもしれない

逆に、「単純な計算処理」や「if文でチェックできる内容」にまでtry-catchを使いすぎると、プログラムが読みにくくなるので注意が必要です。

7. catchの書き方はいろいろある

7. catchの書き方はいろいろある
7. catchの書き方はいろいろある

catchには「特定のエラークラス」を指定できます。PHPでは、エラーの種類ごとに異なるクラスが用意されています。


<?php
try {
    // 例外をスロー
    throw new InvalidArgumentException("値が不正です");
} catch (InvalidArgumentException $e) {
    echo "引数のエラー: " . $e->getMessage();
} catch (Exception $e) {
    echo "その他のエラー: " . $e->getMessage();
}
?>

このように、複数のcatchを並べることもできて、エラーの種類に応じて処理を変えることができます。

8. エラーを自分で発生させるthrowの使い方

8. エラーを自分で発生させるthrowの使い方
8. エラーを自分で発生させるthrowの使い方

ときには、自分で「ここでエラーを起こしてほしい」と指示したい場面もあります。そのときに使うのがthrow(スロー)です。


<?php
function checkAge($age) {
    if ($age < 18) {
        throw new Exception("18歳未満は登録できません");
    }
    return "登録完了!";
}

try {
    echo checkAge(16);
} catch (Exception $e) {
    echo $e->getMessage();
}
?>

この例では、年齢が18歳未満だったら自動的にエラーを発生させて、それをcatchで受け止めています。

まとめ

まとめ
まとめ

PHPの例外処理であるtry-catchは、プログラムの安定性や信頼性を高めるために欠かせない重要な機能です。この記事では、try-catchの基本的な使い方から、実際のコード例、応用的なcatchの分岐処理、さらにはthrowを使ったエラーの手動発生まで、段階を踏んで丁寧に解説してきました。

まず、エラーを「発生してはいけないもの」と捉えるのではなく、「起きる前提でどう対応するか」がプログラミングでは非常に大切です。PHPでは、ゼロ除算や存在しないファイルの読み込み、引数の誤りなど、現実世界のあらゆるトラブルに似た形で例外が発生します。tryで危険な処理を囲い、catchでその結果を受け止める設計は、まさに日常生活の「もしも」に備える姿勢そのものです。

特に、複数のcatchを使ってエラーの種類に応じて処理を分ける方法は、現場でも多く使われており、より具体的で安全なコードを書くための基盤になります。また、自らエラーをthrowで発生させて、事前条件に違反した場合に処理を止めるという考え方は、入力値の検証やAPIの設計にもよく使われます。

以下に、今回の学びを反映したコード例をあらためて整理してみましょう。


<?php
function processFile($filename) {
    if (!file_exists($filename)) {
        throw new Exception("ファイルが存在しません: $filename");
    }
    return file_get_contents($filename);
}

try {
    $data = processFile("sample.txt");
    echo "ファイルの内容:<br>" . htmlspecialchars($data);
} catch (Exception $e) {
    echo "エラー: " . $e->getMessage();
}
?>

この例では、まずファイルの存在をfile_exists()でチェックし、存在しなければthrowで例外を投げます。tryの外で呼び出されたprocessFile内のエラーは、catchで丁寧に拾われ、ユーザーにわかりやすく通知されます。

初心者の方は、「tryの中に書けば安心」という思い込みをしがちですが、現実には、どこでエラーが発生するかを意識して、必要な部分だけにtry-catchを使うことが、読みやすくメンテナンスしやすいコードへの第一歩です。

これからPHPでの実用的なアプリケーション開発を目指す場合、try-catchの理解は避けて通れません。ファイル処理、データベースアクセス、Web API通信など、あらゆる外部要因のリスクに備えて、適切なエラーハンドリングが求められます。この記事をきっかけに、エラーが起きても落ち着いて対応できるような、堅牢なPHPコードを書けるようになりましょう。

最後に、例外処理の書き方だけでなく、どういったエラーが起きやすいのか、どんなときにcatchが役立つのかを常に考えながらコーディングする姿勢が大切です。PHPの例外処理を使いこなせるようになることで、より柔軟で安全なプログラムが書けるようになります。

先生と生徒の振り返り会話

生徒

「先生、例外処理って最初は難しそうでしたけど、意外と日常のトラブルに似てるんですね!」

先生

「そうだね。トラブルが起きたときにどう対応するかを決めておくっていう考え方が大切なんだ。」

生徒

「たとえばファイルが見つからなかったときにcatchでメッセージを出すのって、”すみません、見つかりませんでした”って言ってるみたいで、すごくやさしい気がしました。」

先生

「うんうん、ユーザーにやさしいプログラムを書くって、とても大切な視点だよ。try-catchはそのための手段でもあるんだ。」

生徒

「じゃあ、これからはいろんな場面でtry-catchを使って、安心して動くコードを書いてみます!」

先生

「その意気だね!エラーに怯えるんじゃなくて、エラーとうまく付き合えるエンジニアを目指していこう!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

PHPでtry-catchを使うと、どんなエラーが防げますか?

PHPのtry-catchを使うことで、ゼロ除算エラー、ファイルが見つからないエラー、データベース接続エラー、外部APIとの通信エラーなど、実行時に起こる例外的なエラーを安全に処理できます。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
PHP
PHPのCookieセキュリティを完全ガイド!初心者でもわかるSecureとHttpOnlyの使い方
New2
PHP
PHPのCSRF対策を完全理解!トークンを使った安全なフォーム送信の仕組みを初心者向けに徹底解説
New3
PHP
PHPのSQLインジェクション対策を完全解説!初心者でも安全にデータベースを扱う方法
New4
PHP
PHPでカウントダウンタイマーを作る方法!初心者向けにやさしく解説
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.2
Java&Spring記事人気No2
PHP
初心者向けPHPでMySQLからデータを取得する方法(SELECT文)完全ガイド
No.3
Java&Spring記事人気No3
Python
Pythonのリストの重複を削除する方法を解説!初心者向けにsetとdict.fromkeysの使い方をやさしく説明
No.4
Java&Spring記事人気No4
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方
No.5
Java&Spring記事人気No5
PHP
PHPのXSS対策を完全ガイド!初心者でもわかる安全なWebアプリの作り方
No.6
Java&Spring記事人気No6
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.7
Java&Spring記事人気No7
PHP
PHPのOAuth認証をやさしく解説!Google・Facebookログインを初心者向けに実装しよう
No.8
Java&Spring記事人気No8
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
-
-