{category}

PHP - 例外処理

catch

キャッチ(エラー処理・デバッグ・テスト

意味 発生した例外を捕捉する


catchとは?

catchは、tryブロック内で発生した例外を捕捉するために使用されるキーワードです。例外が発生した場合の処理を定義します。

catchの具体的な使い方

例外処理の基本例

try {
    // 危険な処理
    $result = 10 / 0;
} catch (DivisionByZeroError $e) {
    echo '捕捉した例外: ' . $e->getMessage() . "\n";
} catch (Exception $e) {
    echo '一般的な例外: ' . $e->getMessage() . "\n";
}

👇出力結果

捕捉した例外: Division by zero

この例では、ゼロ除算エラーを意図的に発生させています。catchブロックでその例外を捕捉し、エラーメッセージを表示します。複数のcatchブロックを使用して、異なる種類の例外を個別に処理しています。

例外の種類に応じた処理

function processFile($filename) {
    try {
        if (!file_exists($filename)) {
            throw new RuntimeException('ファイルが見つかりません');
        }
        $content = file_get_contents($filename);
        if ($content === false) {
            throw new Exception('ファイルの読み込みに失敗しました');
        }
        return $content;
    } catch (RuntimeException $e) {
        echo 'ファイルエラー: ' . $e->getMessage() . "\n";
    } catch (Exception $e) {
        echo '一般エラー: ' . $e->getMessage() . "\n";
    }
}

processFile('存在しないファイル.txt');

👇出力結果

ファイルエラー: ファイルが見つかりません

この例では、ファイル処理中に発生する可能性のある異なる種類の例外を処理しています。ファイルが存在しない場合はRuntimeExceptionを、ファイルの読み込みに失敗した場合は一般的なExceptionをスローし、それぞれ適切に捕捉して処理しています。

catchに関するよくある質問

Q. catchは必ず必要ですか?
A. tryブロックを使用する場合、少なくとも1つのcatchブロックまたはfinallyブロックが必要です。catchブロックがないと、例外が発生した場合にプログラムが予期せず終了する可能性があります。
Q. 複数のcatchを使えますか?
A. はい、複数のcatchブロックを使用して、異なる種類の例外を個別に処理することができます。より具体的な例外クラスを先に、より一般的な例外クラスを後に配置することが推奨されます。
Q. catchの引数は省略できますか?
A. PHP 7.1以降では、catch (Exception $e)のように例外変数を指定する代わりに、catch (Exception)のように変数を省略することができます。ただし、この場合、catchブロック内で例外オブジェクトにアクセスすることはできません。

catchが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、PHPのcatchやアサーション、debug_backtrace()、error_reporting()、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


PHPを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!PHPはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

アサーション

テストの結果が期待通りか検証

種類: ユニットテスト

debug_backtrace()

コールスタックを取得する関数

種類: デバッグ

error_reporting()

エラー報告レベルの設定

種類: エラー報告

new

オブジェクトの作成

種類: オブジェクト

トランザクション

一連の処理をまとめる機能

種類: PDO