カテゴリ: PHP 更新日: 2026/02/19

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(トライキャッチ)とは、プログラムの実行中に発生する「予期せぬエラー」をスマートに解決するための仕組みです。プログラミングの世界では、このエラーのことを専門用語で「例外(れいがい)」と呼びます。

たとえば、あなたが「自動販売機でジュースを買うプログラム」を作ったとしましょう。通常は「お金を入れてボタンを押せば商品が出る」という流れですが、もし「お釣りが切れていた」り「商品が詰まってしまった」らどうなるでしょうか?

何も対策をしていないプログラムは、そこでパニックを起こして強制終了してしまいます。Webサイトであれば、真っ白な画面に英語のエラーメッセージが表示される、いわゆる「落ちた」状態です。これを防ぐために、「もしトラブルが起きたら、あらかじめ決めておいた別の行動をとってね」と指示を出すのがtry-catchの役割です。

tryブロック(やってみる)
正常に動かしたいメインの処理を書きます。「まずはこれを試して!」という区画です。
catchブロック(捕まえる)
tryの中でエラーが起きた時だけ実行されます。エラーを「捕まえて」フォローする役割です。

未経験の方でもイメージしやすいように、簡単なイメージコードを見てみましょう。


<?php
try {
    // 【try】まずは実行してみたい処理
    echo "自動販売機に100円を入れます。";
    
    // ここで何か問題(例外)が発生したと仮定します
    // 本来はここに商品の搬出処理などを書きます
    
} catch (Exception $e) {
    // 【catch】もしtryの中で問題が起きたら、ここへジャンプ!
    echo "エラー発生:店員さんを呼んでいます...";
}
?>

このように、try-catchを使うことで、エラーが起きてもユーザーを困らせることなく、安全にプログラムを継続させることができるようになります。Web開発において、ユーザーに不快な思いをさせないための必須テクニックと言えるでしょう。

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
Python
Pythonのカスタム例外を作成する方法を完全解説!初心者でもわかる独自のExceptionクラス入門
New2
PHP
PHP の型変換を完全ガイド!初心者でもわかる明示的変換・自動変換
New3
PHP
PHPの真偽値と条件判定をやさしく解説!初心者でもわかるempty・isset・is_nullの使い方
New4
PHP
PHP の file_get_contents() を使ってファイルを読み込む方法!初心者でもできる簡単なファイル操作
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonのfinally文を徹底解説!例外発生時でも実行される処理の書き方と使い方
No.2
Java&Spring記事人気No2
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.3
Java&Spring記事人気No3
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.4
Java&Spring記事人気No4
Python
Pythonの書き方を基本から解説!はじめてのPythonプログラム
No.5
Java&Spring記事人気No5
PHP
PHPの可変長引数(...$args)の使い方を完全ガイド!初心者でもわかる基本と活用方法
No.6
Java&Spring記事人気No6
PHP
初心者向けPHP の MySQL のデータを更新する方法(UPDATE 文)完全ガイド
No.7
Java&Spring記事人気No7
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.8
Java&Spring記事人気No8
PHP
PHPのswitch文を使った条件処理の書き方を完全ガイド!初心者でもわかる使い方